2011-04-15 52 views
0

你好,我很困惑如何用流利的nhibernate保存對象。如何用流利的nhibernate保存對象

說我有一個類Foo與ChildFoo有一對多的關係。

表富富有ID和名稱。表ChildFoo具有與foo實體的id相匹配的sourceID。

映射看起來像這樣。

class Foo 
{ 
    public virtual ID {get;set;} 
    public IList<FooChild> Components{get;set;} 
} 

的映射是這樣的

public FooMap : ClassMap<FooMap> 
{ 
    public FooMap() 
    { 
     HasMany(x => x.Components).KeyColumn("SourceID"); 
    } 
} 

現在,當我要救FooMap與組件的一些收藏,我怎麼告訴流利的NHibernate保存實體(類Foo和一幫存儲在組件列表中的Foo Children)我已經創建了,而不需要我手動保存每個組件。

謝謝。

回答

0

你想要改變你的hasMany映射到以下幾點:

HasMany(x => x.Components).KeyColumn("SourceID").Inverse().Cascade.All(); 

而且它看起來像你的映射是不正確。它應該是這樣的:

public FooMap : ClassMap<Foo> 
{ 
    public FooMap() 
    { 
     Id(x => x.ID, "SourceID"); 
     HasMany(x => x.Components) 
     .KeyColumn("SourceID") 
     .Inverse() 
     .Cascade.All(); 
    } 
} 
+0

你確定我必須做Inverse()?沒有反對效果? 我能夠按照你說的做,但沒有反向()方法調用 – Erion 2011-05-03 19:34:37

+0

對於你想要的行爲,我認爲你確實需要這個。沒有不完全。請閱讀這篇[文章](http://groups.google.com/group/fluent-nhibernate/browse_thread/thread/9f24fdcc8ee520fe),以獲取有關HasMany關係中反作用的更多細節。在Fluent Wiki上的描述有些不清楚。 – 2011-05-03 19:39:47