0

我正在从 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 中不需要它。

4

1 回答 1

0

you could make a base mapping class

public class BaseAuditEntityMapping<T> : ClassMapping<T> where T: BaseAuditEntity
{
    ManyToOne(x => x.ModifiedByUser);
    Property(x => x.LastModifiedTime);
}

public class FooMap: BaseAuditEntityMapping<Foo>
于 2012-05-03T06:53:47.100 回答