Привет всем,
у меня есть классы вида,
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() и тут мне не ясен механизм синхронизации состояния объекта с базой.
Я, по сути, даже узнать не могу что мне за роль в базе удалять, так как объект отвечающий за нее исчез.
Кто-то сталкивался с подобными вещами или может посоветуете как подругому такую задачу решить?
За ранее спасибо.
Здравствуйте, roman.svet, Вы писали:
RS>Я, по сути, даже узнать не могу что мне за роль в базе удалять, так как объект отвечающий за нее исчез.
RS>Кто-то сталкивался с подобными вещами или может посоветуете как подругому такую задачу решить?
Просто вести список удалённых.
RS>За ранее спасибо.
Здравствуйте, roman.svet, Вы писали:
RS>Кто-то сталкивался с подобными вещами или может посоветуете как подругому такую задачу решить?
Может, сразу
готовое возьмете?
Объект не удаляется из коллекции, а помечается как IsDeleted.
Отложенные изменения реализуются через паттерн UnitOfWork или Session.
Например, в NHibernate Session.Flush() вызывает уже "окончательные" изменения в БД.