Re[6]: удаление бизнес-объекта
От: Ctraveller  
Дата: 28.07.09 07:21
Оценка:
Здравствуйте, 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. если бизнес-объект положен в список, то необходимо во всех местах где используется бизнес-объект, знать и про этот самый список.

И еще вопрос: описанный подход, "единственный-официальный-правильный" для данной задачи?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.