Я использую FluentNHibernate с WebApi 2.0. Я дам небольшое небольшое представление о том, чего я пытаюсь достичь.FluentNHibernate SaveOrUpdate error
Итак, у меня есть 2 таблицы в моей Azure DB, для таблицы простоты 1 Emails
, а вторая таблица Events
.
Так что в моем EmailsController
в основном вызывающий абонент передает некоторые данные, которые в основном состоят из электронной почты (т. Е. Темы, отправителя и т. Д. И т. Д.).
Усложнение возникает из-за того, что в моей таблице Emails
я генерирую первичный ключ в коде. Это 32-символьный GUID.
Основной ключ в таблице Events
- это поле сгенерированное БД с IDENTITY
.
Для удобства использования моего веб-приложения мне нужно иметь возможность сохранить первое соответствующее событие в моем почтовом объекте.
Так что, в основном, я вызываю Save
на свой объект электронной почты. Затем немного дальше вниз. Я вызываю Save
на объект моих событий. Поскольку PK для таблицы Events
автоматически генерируется через Azure. Я могу получить это, однако осложнение возникает, когда я хочу изменить свой объект электронной почты и сохранить его обратно в БД.
Я продолжаю получать следующее сообщение об ошибке другой объект с тем же значением идентификатора уже был связан с сессией
Я знаю , что средства ошибок, и это достаточно просто понять, но как я идете об исправлении этого?
Мне нужно сохранить автоматически сгенерированный PK из объекта Events, обратно в другое поле в мой объект электронной почты. Звучит просто, но не может для меня жизнь заставить эту работу работать.
Я пробовал звонить Merge
(что было заменой SaveOrUpdateCopy
), но все еще не работает. Кажется, на самом деле это не сохраняется.
Я могу опубликовать код для сопоставления, а также мои методы для вызова простых методов Save
.
Любое простенькое исправление к этому?
Есть ли у вас какие-либо отношения между письмами и событиями? Может быть, объект Event сохраняется, когда вы сохраняете объект электронной почты? – chameleon86
Это отношения от одного до многих. Объекты сохраняются. Сначала я сохраняю объект электронной почты перед вызовом Save on the Events. –
Делает ли «когда я хочу редактировать свой объект электронной почты и сохранять его обратно в БД» означает, что вы загружаете ранее сохраненный объект из db, изменяете его и затем сохраняете обратно в db? Если да, как вы его загружаете? Возможно, именно здесь вы получаете вторую копию объекта с тем же идентификатором. Используете ли вы сеанс за запрос? Что произойдет, если вы используете 'session.Flush()' после 'session.Save()' при первом сохранении события и электронной почты? –