Здравствуйте, ili, Вы писали:
ili>Здравствуйте, Аноним, Вы писали:
А>>в БЛТ ничего подобного пока не нашел.
ili>ээээ...
ili>ili>EditableList<MyObject> list;
ili>// как-то инициируем этот самый лист...
ili>// из базы берем, руками делаем, или еще как
ili>// далее выполняем над ним шаманства (добавляем, удаляем, правим элементы)
ili>// теперь хотим "зскоммитить" изменения в базу
ili>if (!list.IsDirty) //в результате "шаманств" не изменился
ili> return;
ili>using(DbManager db = new DbManager())
ili>{
ili> MyObjectAccessor da = MyObjectAccessor.CreateInstance(db);
ili> da.BeginTransaction();
ili> foreach(var toDel in list.DelItems)
ili> da.Delete(toDel);
ili> foreach(var toIns in list.NewItems)
ili> da.Insert(toIns);
ili> foreach(var e in list)
ili> if(e.IsDirty)
ili> da.Update(e);
ili> da.CommitTransaction();
ili> list.AcceptChanges();
ili>}
ili>
Попробовал использовать такой подход и столкнулся с двумя проблемами:
1. бизнес-объект может загружаться и использоваться одиночно. Создание списка, используемого для хранения состояния удален/не удален приводит к лишным накладным расходам.
2. если бизнес-объект положен в список, то необходимо во всех местах где используется бизнес-объект, знать и про этот самый список.
И еще вопрос: описанный подход, "единственный-официальный-правильный" для данной задачи?