流畅的NHibernate混合映射属性

时间:2010-09-09 16:51:34

标签: nhibernate fluent-nhibernate

我正在尝试使用流畅的nhibernate来自动映射类的大多数属性,然后手动映射同一个类的1或2个属性(无需手动映射类映射中的所有其他变量)。

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

以下是一个例子:

Person类包含字段:ID,名字,姓氏,描述和其他几十个字段。

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

所以我试试:

公共类PersonMap:ClassMap     {         public PersonMap()         {             Map(x => x.description).Length(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 个答案:

答案 0 :(得分:1)

好的我明白了。我在声明配置时可以使用一种称为“覆盖”的方法,在那里我可以指定特定属性的所有覆盖:

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

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