Отложенные изменения или реализация метода Save
От: roman.svet  
Дата: 24.01.08 16:50
Оценка:
Привет всем,
у меня есть классы вида,
public class Role
{
   private int _id;

   // some code
}

public class RoleList : Collection <Role>
{
   
}

public class User
{
   private int _id;

   public RoleList roleList;
   
   public void Save() 
   {
     // some code
   }
}

то есть создается какой-то объект класса User, ему можно назначить какие-то роли через User.RoleList.Add(new Role())
и потом вызвать User.Save(), метод который приведет к сохраненнию данных в DB.
При этом я пробегусь по всем присвоенным ролям и данному юзеру назначу присвоенные роли.
Следующий этап теперь мы объект User создаем на основе данных из базы.
И удаляем какую то роль User.RoleList.Remove(someRole)
и хотим сделать User.Save() и тут мне не ясен механизм синхронизации состояния объекта с базой.
Я, по сути, даже узнать не могу что мне за роль в базе удалять, так как объект отвечающий за нее исчез.
Кто-то сталкивался с подобными вещами или может посоветуете как подругому такую задачу решить?

За ранее спасибо.
Re: Отложенные изменения или реализация метода Save
От: SergH Россия  
Дата: 24.01.08 16:56
Оценка:
Здравствуйте, roman.svet, Вы писали:

RS>Я, по сути, даже узнать не могу что мне за роль в базе удалять, так как объект отвечающий за нее исчез.

RS>Кто-то сталкивался с подобными вещами или может посоветуете как подругому такую задачу решить?

Просто вести список удалённых.

RS>За ранее спасибо.


Делай что должно, и будь что будет
Re: Отложенные изменения или реализация метода Save
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 25.01.08 14:05
Оценка:
Здравствуйте, roman.svet, Вы писали:

RS>Кто-то сталкивался с подобными вещами или может посоветуете как подругому такую задачу решить?


Может, сразу готовое возьмете?
HgLab: Mercurial Server and Repository Management for Windows
Re: Отложенные изменения или реализация метода Save
От: снежок Россия  
Дата: 28.01.08 21:23
Оценка:
Объект не удаляется из коллекции, а помечается как IsDeleted.
Отложенные изменения реализуются через паттерн UnitOfWork или Session.
Например, в NHibernate Session.Flush() вызывает уже "окончательные" изменения в БД.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.