Я хочу отслеживать список корневых объектов, которые не содержатся ни в одном элементе. Я хочу, чтобы следующий псевдокод работал:
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 () для всех элементов отдельно.
Можно ли определить псевдо-сущность, которая не связана с таблицей? Например, я хочу определить класс Favorites и сопоставить его со свойствами коллекции 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, который отслеживает добавления и удаления, которые не принадлежат родительской сущности и обозначают себя (то же самое, что происходит со свойствами коллекции сущностей, только в моем случае у меня нет родительской сущности). Это прекрасно работает, если коллекции принадлежат объекту, и в этом случае я могу добавлять и удалять элементы между двумя сеансами.
Любая помощь очень ценится.