我正在从Fluent转变为Loquacious,而且我遇到了一个问题,我的拦截器并没有像我认为的那样得到所有领域。如果我查看OnSave函数
public override Boolean OnSave(Object entity, Object id, Object[] state,
String[] propertyNames, IType[] types)
并查看propertyNames,其中唯一的项目是在映射文件中显式映射的项目(在示例中,这只是ID,Start和End)。
在我的情况下,虽然我有一个根本没有映射的基类。相反,它只包含被拦截器填充的属性。这曾经在Fluent Nhibernate中工作,但是现在我已经转移到Nhibernate 3.3了,我再也无法让它工作了。
我的类/映射看起来像这样
public class BaseAuditEntity
{
public virtual int ModifiedByUserID { get; set; }
public virtual DateTime LastModifiedTime { get; set; }
}
public class Foo : BaseAuditEntity
{
public virtual int ID { get; protected internal set; }
public virtual DateTime Start { get; protected internal set; }
public virtual DateTime End { get; protected internal set; }
}
public class FooMap: ClassMapping<Foo>
{
Id(x => x.ID, m => m.column("fooID"));
Property(x => x.Start, m => m.column("start"));
Property(x => x.End, m => m.column("end"));
}
有关如何使这项工作的任何想法?我不想每个类都映射这个,我认为我不需要映射BaseAuditEntity,至少在Fluent中不需要它。
答案 0 :(得分:0)
您可以制作基础映射类
public class BaseAuditEntityMapping<T> : ClassMapping<T> where T: BaseAuditEntity
{
ManyToOne(x => x.ModifiedByUser);
Property(x => x.LastModifiedTime);
}
public class FooMap: BaseAuditEntityMapping<Foo>