У меня есть решение, которое использует Fluent nHibernate
для своего бэкэнда данных, и я использую ASP.NET MVC 3.0
для моего интерфейса.Я думал, что был умен, используя Model View ViewModel
подход, чтобы решить что-то, но это как бы обернулось для меня ...
Вот моя модель.
class Alpha {
virtual Guid Id { get; set; }
virtual string Name { get; set; }
virtual IList<Delta> ListOfItems { get; set; }
}
class Delta {
virtual Guid Id { get; set; }
virtual string Name { get; set; }
// some other properties
}
Отлично работает.Теперь вот мой AlphaViewModel
class AlphaViewModel {
string Name { get; set; }
IList<Delta> ListOfItems { get; set; }
}
Я использую модель представления, чтобы избежать конфликта с Proxies .Поскольку я знаю, что первый вопрос будет звучать так: «Ваша модель представления выглядит точно так же, как ваша модель, нет смысла ее использовать».Это отлично работает, но теперь вот моя проблема.
Представьте себе следующий процесс ..
- Пользователь создает Альфа с помощью AlphaViewModel
- База данных сохраняет Альфа
- Пользователь Добавляет новый экземпляр Дельта через ListOfItems свойство
- База данных сохраняет Альфа вместе с новыми Дельта элементами.
- Изменения пользователя Альфа
- Пользователь удаляет 1 экземпляр Дельта
- База данных отправляется на сохранение ...
Теперь у нас новая проблема.База данных на самом деле не знает Id
того, что она меняет.
Я могу добавить Id
к ViewModel, но это действительно не решает все проблемы.Я видел, как люди справляются с этой ситуацией с добавлением новых предметов, но я не могу найти хороших решений, которые бы показали, что удаляет их.Кто-нибудь может предложить какое-то понимание?
Я знаю, что этот вопрос не имеет ничего общего с nHibernate, но поскольку часть моих рассуждений касается прокси-серверов nHibernate, я включаю его как часть моей полосы тегов, поскольку она может быть частьюрешения / проблемы.