我正在尝试使用流畅的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() )));
谢谢!
答案 0 :(得分:1)
好的我明白了。我在声明配置时可以使用一种称为“覆盖”的方法,在那里我可以指定特定属性的所有覆盖:
AutoPersistenceModel mdl = AutoMap.Assembly(System.Reflection.Assembly.GetExecutingAssembly());
mdl.Override<MyNamespace.Person>(map =>
{
map.Map(x => x.description).Length(4000);
});