我想跟踪任何元素未包含的根对象的列表。我想下面的伪代码工作:NHibernate:使用根对象的根集合
using (session1 = [...]) {
IList<FavoriteItem>list = session1.Linq<FavoriteItem>().ToList();
}
list.Add(item1);
list.Add(item2);
list.Remove(item3);
list.Remove(item4);
var item5 = list.First(i => i.Name = "Foo");
item5.Name = "Bar";
using (session2 = [...]) {
session2.Save(list);
}
这应该自动插入物品1和项目2,项目3删除和项目3和更新ITEM5(即我不想单独调用sesssion.SaveOrUpdate()的所有项目。
是否有可能确定不与表关联伪实体比如我要定义的类收藏夹和它比图2个集合属性我想写这样的代码:
using (session1 = [...]) {
var favs = session1.Linq<Favorites>();
}
favs.FavoriteColors.Add(new FavoriteColor(...));
favs.FavoriteMovies.Add(new FavoriteMovie(...));
using (session2 = [...]) {
session.SaveOrUpdate(favs);
}
FavoriteColors and FavoriteMovies是收藏夹类的唯一属性,属于IList和IList类型。我只想保留这两个集合属性,但不是收藏夹类。
其实我想要一个IPersistentCollection对象跟踪添加和删除属于没有父实体并代表自己(发生在实体集合属性发生的相同的东西,只在我的情况下,我没有父实体)。如果集合属于一个实体,在这种情况下,我可以在两个会话之间添加和删除项目,这非常有效。
任何帮助,非常感谢。
要求它必须在会话间工作并不清楚你的问题。您应该将此(和其他隐藏的要求)添加到您的问题中,以避免人们花时间给一个不完整的问题提供无用的答案。 – 2010-05-26 20:44:11