[Test]
public void Artist_gets_stored_properly()
{
using (ISession session = NHHelper.GetSession())
{
Artist artist = new Artist() { Name = "Somathilaka Jayamaha" };
artist.Songs = new List<Song>()
{
new Song(){Artist = artist, Name = "Manamaala girawu"},
new Song(){Artist = artist, Name = "Sende andura"},
new Song(){Artist = artist, Name = "Sunilwan nuwan"}
};
foreach (var s in artist.Songs)
{
session.Save(s);
}
session.Save(artist);
}
using (ISession session = NHHelper.GetSession())
{
Artist artist = session.Query<Artist>().Single(x => x.Name == "Somathilaka Jayamaha");
Assert.AreEqual(3, artist.Songs.Count);
Assert.AreEqual("Sende andura", artist.Songs[1].Name);
}
}
public class Artist
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual IList<Song> Songs { get; set; }
}
public class Song
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string WebPath { get; set; }
public virtual string FilePath { get; set; }
public virtual bool Downloaded { get; set; }
public virtual Artist Artist { get; set; }
void Download(IDownloader downloader)
{
}
}
我有上面的測試用例,它在這一行失敗:Assert.AreEqual(3, artist.Songs.Count);
。歌曲似乎沒有得到保存。我使用自動映射,並在映射覆蓋的集合字段中使用Cascade.All()
並關閉延遲。我不明白爲什麼這個測試失敗。正如你所看到的,我手動保存了3首歌曲,儘管據我所知,當Cascade.All()
爲Artist.Songs
字段時,我不需要這樣做。有人能告訴我我做錯了什麼嗎?謝謝。在數據庫中沒有正確保存的對象
MS SQLServer的2005,.NET 3.5,FluentNHibernate 1.2.0.712
什麼是你的刷新模式設置爲? 'FlushMode。?' – Rippo 2012-03-12 08:12:43
另外你如何處理交易? – Rippo 2012-03-12 08:29:28