2010-09-09 137 views
0

我想用流利的nhibernate自动映射类的大部分属性,然后手动映射同一类的1或2个属性(无需手动映射类中的所有其他变量地图)。流利的NHibernate混合映射属性

我有一个有几十个属性的类,但其中一个属性是一个字符串,它需要很长的长度。

下面是一个例子:

Person类有字段:ID,名字,姓氏,描述和其他几十个领域。

我会自动映射类,但我想'描述'是一个长字符串,而不是一个nvarchar(255)。

所以我尝试:

公共类PersonMap:类映射 { 公共PersonMap() { 地图(X => x.description)。长度(4000); } }

但这不会自动映射所有其他属性(抛出异常)。它期望每个属性的声明。

有没有办法完成我想要做的事情?

如果有人需要它,这里的代码,我使用申报配置:

FluentConfiguration cfg = Fluently.Configure() 
.Database(FluentNHibernate.Cfg.Db.MsSqlConfiguration.MsSql2000.ConnectionString(Cn)); 
     AutoPersistenceModel mdl = 
      AutoMap.Assembly(System.Reflection.Assembly.GetExecutingAssembly()); 

     cfg.Mappings(m => m.AutoMappings.Add(mdl.Where(type => 
     type.Namespace != null && type.Namespace.ToLower() == strNamespace.ToLower()))); 

谢谢!

回答

1

好吧我想通了。有一种叫做“覆盖”的方法,可以在声明配置时使用,并且在那里我可以指定所有覆盖特定属性:

AutoPersistenceModel mdl = AutoMap.Assembly(System.Reflection.Assembly.GetExecutingAssembly()); 

mdl.Override<MyNamespace.Person>(map => 
{ 
    map.Map(x => x.description).Length(4000); 
});