Это связано с этим вопросом, который я задал ранее.Почему каскад SaveUpdate запускает оператор Delete?
В Request
картирование У меня установлено значение SaveUpdate
должным образом и в Discount
mapping У меня есть каскад, которого нет.
Есть два сценария:
Первый является новый запрос и новые скидки. Созданные и затем добавили скидку на запрос и сохранили запрос; это работает так, как ожидалось.
Следующий сценарий - новый запрос и существующая скидка. Это не работает правильно, и я не уверен, почему. Ниже операторы SQL побежал в тесте (опустим значения):
NHibernate: INSERT INTO Requests NHibernate: SELECT @@identity NHibernate: INSERT INTO DiscountRequests (DiscountId, RequestId) VALUES (3, 5); NHibernate: UPDATE Discounts NHibernate: DELETE FROM DiscountRequests WHERE DiscountId = 3;
Последняя строка является вопрос: он возвращается и удаление вставки из строки 3. Команда, которую я подаю на запрос объект session.Save(request);
, ничего больше.
Будет ли причина, по которой выполняется вызов для удаления?
Edit:
код Обновление
public void Add(Request request)
{
using (ISession session = NHibernateHelper.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
session.Save(request);
transaction.Commit();
}
}
}
Скидка Mapping
<join table="DiscountRequests" optional="true">
<key column="DiscountId" />
<many-to-one name="Request" column="RequestId" cascade="none" />
</join>
Запрос Mapping
<join table="DiscountRequests" optional="true">
<key column="RequestId" />
<many-to-one name="Discount" column="DiscountId" cascade="save-update" />
</join>
TTP: //stackoverflow.com/questions/14837373/zero -слишком ne-relationship-nhibernate-mapping
Вы обновили обе стороны отношений? Вы используете трюк с элементом с другого вопроса? Можете ли вы показать код, который выполняет изменения? –
В зависимости от настроек 'Cascade' обновление« Скидки »может привести к удалению. У вас есть атрибут каскада в свойстве 'СкидкиRequests' класса' Скидки', установленном 'save, update'? Можете ли вы разместить файлы сопоставления для всех трех таблиц? – rae1