1
我試圖測試以下:分配現有的實體許多到許多不更新一邊
// Arrange
var alpha = new Alpha { Name = "Hello" };
var beta = new Beta { Name = "World" };
using (var t = this.Session.BeginTransaction())
{
this.Session.Save(alpha);
this.Session.Save(beta);
t.Commit();
}
// Act
using (var t = this.Session.BeginTransaction())
{
var a = this.Session.Get<Alpha>(1);
var b = this.Session.Load<Beta>(1);
a.Betas.Add(b);
t.Commit();
}
// Assert
//// this succeeds
Assert.AreEqual(1, this.Session.Get<Alpha>(1).Betas.Count, "Alpha contains beta");
//// this fails
Assert.AreEqual(1, this.Session.Get<Beta>(1).Alphas.Count, "Beta contains alpha"); fails here
Assert.AreEqual(1, this.Session.Query<Beta>().Count(), "Only one beta");
我的映射是
public AlphaMap()
{
this.Id(a => a.Id);
this.Map(a => a.Name);
this.HasManyToMany(a => a.Betas)
.Cascade.All()
.Table("AlphaBetas")
.ParentKeyColumn("AlphaId")
.ChildKeyColumn("BetaId");
}
和
public BetaMap()
{
this.Id(a => a.Id);
this.Id(a => a.Name);
this.HasManyToMany(a => a.Alphas)
.Cascade.All()
.Inverse()
.Table("AlphaBetas")
.ParentKeyColumn("BetaId")
.ChildKeyColumn("AlphaId");
}
我不確定爲什麼多對多關係的Beta版沒有被更新。有人可以解釋給我 - 我是一個NH新手,所以我可能錯過了一些明顯的東西。
啊'做'session.Clear()'工程!在實施工作單元模式方面,應該在「提交」更改後始終打電話清楚嗎? –
我會說:是的。確切地說,這是我們必須做的。一個操作爲寫...乾淨...其他閱讀!究竟。享受NHiberante;) –