Быстрый NHibernate — сохранение объекта с составным ключом

Вы могли пользоваться библиотекой как jQuery и $ .post метод .

9
задан jckeyes 27 July 2009 в 19:24
поделиться

1 ответ

Редактировать (помещено вверху)

цитата из документации NHibernate:

Из-за присущей ему природы сущности, которые используют этот генератор, не могут быть сохранены с помощью метода ISession SaveOrUpdate (). Вместо этого вы должны явно указать NHibernate, следует ли сохранять или обновлять объект, вызывая метод Save () или Update () ISession.

http://www.nhforge.org/doc/nh/en /index.html#mapping-declaration-id-assigned (5.1.4.7)

Составному идентификатору назначен генератор =.

Это восходит к составному идентификатору = всасывание :)


Вы не выдача флеша или фиксации. Вы, вероятно, привыкли работать с чем-то вроде идентификатора, который выдает INSERT при сохранении, но составные части назначаются вашим кодом, а не базой данных, поэтому вам нужен сброс / фиксация для вставки.


var custHub = new CustomerHub {CustomerId = 293, HubId = 1193};
var y = session.SaveOrUpdate(custHub);
session.Flush();

или

using(var tx = session.BeginTransaction())
{
    var custHub = new CustomerHub {CustomerId = 293, HubId = 1193};
    var y = session.SaveOrUpdate(custHub);
    tx.Commit();
}

Также одно примечание: использование составных ключей заставит вас возненавидеть свою жизнь. Многое не работает с составными ключами, и это не сразу очевидно. По сути, NHibernate может выполнять меньше работы, поэтому вам придется подбирать слабину.

6
ответ дан 4 December 2019 в 23:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: