我想跟踪不包含在任何元素中的根对象列表。我希望以下伪代码工作:
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);
}
这应该会自动插入 item1 和 item2,删除 item3 和 item3 并更新 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 和 FavoriteMovies 是 Favorites 类的唯一属性,它们的类型为 IList 和 IList。我只想保留这两个集合属性,而不是收藏夹类。
实际上,我想要一个 IPersistentCollection 对象来跟踪不属于父实体并代表自身的添加和删除(与实体的集合属性发生的事情相同,仅在我的情况下我没有父实体)。如果集合属于一个实体,这非常有效,在这种情况下,我可以在两个会话之间添加和删除项目。
任何帮助深表感谢。