Синхронизация модели представления с моделью данных в ASP.NET MVC 3.0 - PullRequest
0 голосов
/ 25 мая 2011

У меня есть решение, которое использует 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, я включаю его как часть моей полосы тегов, поскольку она может быть частьюрешения / проблемы.

1 Ответ

1 голос
/ 25 мая 2011

Дизайн вашей формы лучше.У вас нет ссылок или флажков «Удалить» для каждого элемента?

(imho, это несуществующая проблема)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...