2012-05-01 62 views
0

我從流利轉換成貧嘴的性質,我已經在的地方我的攔截器沒有得到所有的領域,如我想他們應該問題上運行。如果我看的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

除了使用automapping外,FNH不會自己映射它們。你可以使用代碼的等價自動映射來獲得相同的效果 – Firo