1

Используя метод от Steve Sanderson's blog, у меня есть список элементов, с которыми я могу динамически добавлять с помощью jquery.MVC сохраняют смешанную коллекцию существующих и новых записей

Итак, у меня есть список транспортных средств (которые принадлежат человеку), которые я загружаю из БД. Когда я нажимаю «Сохранить», элементы получают привязку через стандартный механизм привязки модели MVC, и я могу просто вызвать Update на объекте Person.

Проблема возникает, когда я динамически добавляю новый ряд автомобилей. Поскольку это транспортное средство не относится к первоначальному списку, вызов Update не будет сохранять этот новый элемент. Но вызов Create не будет работать, потому что у меня есть существующие транспортные средства, которые нуждаются в обновлении.

Есть ли элегантный способ справиться с этим, или мне нужно пройти через каждое транспортное средство, проверить, существует ли он в БД, а затем вызвать Update/Edit в зависимости от результата?

Я использую NHibernate с C# в MVC3.

ответ

1

Какой метод вы используете для создания идентификаторов ваших объектов?

Если они генерируются с помощью NHibernate можно не только проверить идентификатор для каждого транспортного средства -

Если нуль или по умолчанию (guid.empty, 0 и т.д. в зависимости от того, какого типа вашего Id), то никогда не был рядом с вашим db и должен быть вставлен.

Если у него есть идентификатор, он уже существует в вашем db и нуждается в обновлении.

+1

На самом деле - с риском делать ненужные обновления session.SaveOrUpdate (объект obj) будет делать именно то, что он говорит на жестяной основе. Вы можете оставить его в Nhibernate, чтобы решить, нужно ли его сохранять/вставлять или обновлять. –

+0

Да, идентификаторы генерируются nhibernate. Вызов репозитория фиксируется как просто обновление (согласно спецификациям, которые я должен соблюдать). Таким образом, вместо вызова SaveOrUpdate, я просто должен сначала проверить его статус null/0. Спасибо, Патрик. – getit

Смежные вопросы