2
我有一段向實體集合(一對多關係)添加元素的代碼。這是ISession.SaveNHibernate中的ISession.Save/Update和ITransaction.Commit之間的區別
using (ISession session = sessionFactory.OpenSession())
{
var package = session.QueryOver<Package>().Where(x => x.ID == selectedPackage).SingleOrDefault();
foreach(var themeId in selectedThemes)
{
var selectedTheme = session.QueryOver<HBTheme>().Where(x => x.ID == themeId).SingleOrDefault();
if (selectedTheme != null)
{
package.Themes.Add(new PackageTheme() { Package = package, Theme = selectedTheme });
}
}
session.Save(package);
}
版本和該版本並沒有爲我工作。正如我曾與ITransaction測試寫的,我改變了它一點點以下:
using (ISession session = sessionFactory.OpenSession())
using (ITransaction transaction = session.BeginTransaction())
{
var package = session.QueryOver<Package>().Where(x => x.ID == selectedPackage).SingleOrDefault();
foreach(var themeId in selectedThemes)
{
var selectedTheme = session.QueryOver<HBTheme>().Where(x => x.ID == themeId).SingleOrDefault();
if (selectedTheme != null)
{
package.Themes.Add(new PackageTheme() { Package = package, Theme = selectedTheme });
}
}
transaction.Commit();
}
,現在它的工作原理。元素在package.Themes集合被存儲在數據庫中。怎麼來的?謝謝!
我認爲在這個Q中接受的答案可能有所幫助:http://stackoverflow.com/questions/1332849/nhibernate-session-save-and-transaction-commit – SpaceBison