這是一個新問題,提前抱歉。自動更新NHibernate的一對多關係的兩端
我使用流利的NHibernate並得到一個奇怪的行爲。
我有一個看起來像(簡體)兩大類:
public class Group
{
public virtual int Id{get;protected set;}
public virtual String Name{get;set;}
public virtual List<Person> Persons {get; protected set;}
}
public class Person
{
public virtual int Id{get;protected set;}
public virtual String Name{get;set}
public virtual Group Group {get;set;}
}
而且映射 組:
Id(x=>x.Id)
Map(x=>x.Name)
HasMany(x=>x.Persons).Cascade.All.Inverse()
人:
Id(x=>x.Id)
Map(x=>x.Name)
References(x=>x.Group)
現在,在我的代碼我想把一個人移到另一個小組。既然是有關係的,我想我可以簡單地做
myPerson.Group = anotherGroup;
_mySession.SaveOrUpdate(myPerson);
_mySession.Flush()
如果我這樣做,數據庫被正確更新,但如果我嘗試的對象「anotherGroup」的人員名單看我不t看到對象「myPerson」,它仍然在舊組的人員列表中。
那麼,有沒有辦法告訴NH重新加載列表,或使其始終更新。
,我現在已經找到了唯一的解決方法是這樣的:
myPerson.Group.Persons.Remove(myPerson);
anotherGroup.Persons.Add(myPerson);
myPerson.Group = anotherGroup;
_mySession.Flush()
但我覺得有點髒......
什麼我做錯了任何想法?謝謝!
嗯,實際上這就是我現在所做的,我沒有在這裏展示過他們的簡化,但我認爲NH會爲我做這件事,對不對? 感謝您的鏈接,非常有趣。 – Gimly 2010-07-15 12:30:26
@Gimly - 不幸的是,保持這些關係是你的責任。 – DanP 2010-07-15 12:35:43
爲什麼會出現這種情況的提示?我認爲在Linq2Sql中這些關係是自動的。未來的版本會改變嗎? – Gimly 2010-07-15 12:59:08