2012-05-01 14 views
0

私はFluentからLoquaciousに変換しています。インターセプタがすべてのフィールドを取得していない問題が発生しました。私はのOnSave機能Nhibernateインターセプタが基本クラスのプロパティを取得しない

public override Boolean OnSave(Object entity, Object id, Object[] state, 
     String[] propertyNames, IType[] types) 

を見て、propertyNamesを見てみる場合はアイテムのみ明示的例では(マッピングファイルにマッピングされたアイテムがある中で、このだけだろうID、[スタート]、および終わり)。

私の場合、私は全くマッピングされていない基本クラスを持っています。代わりに、それはインターセプタによって記入されるプロパティを含んでいます。これは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

あなたはFNHで自動マッピングを使用しましたか? – Firo

答えて

0

あなたは基本マッピングクラスを作ることができ

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

public class FooMap: BaseAuditEntityMapping<Foo> 
+0

これはうまくいきませんでしたが、BaseAuditEntityMappingを指すようにすべてのマッピングを変更しないことを望んでいましたが、これはうまくいきます。ありがとう。 – Zipper

+0

FNHは、オートマップを使用する場合を除いて、それらを独自にマップしません。あなたは、同じ効果を得るために、自動マッピングのコードに相当するマッピングを使用することができます – Firo

関連する問題