FluentからLoquaciousに変換していますが、インターセプターが思ったとおりにすべてのフィールドを取得できないという問題が発生しました。OnSave関数を見ると
public override Boolean OnSave(Object entity, Object id, Object[] state,
String[] propertyNames, IType[] types)
そして、propertyNamesを見てください。そこにある唯一のアイテムは、マッピングファイルに明示的にマッピングされたアイテムです(この例では、これはID、Start、およびEndになります)。
私の場合、まったくマップされていない基本クラスがあります。代わりに、インターセプターによって入力されるプロパティが含まれているだけです。これは以前はFluentNhibernateで機能していましたが、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では必要ありませんでした。