NHibernate по-прежнему выдает обновление после вставки

У меня очень простые однонаправленные сопоставления. см. ниже:

    public ContactMap()
    {
        Id(x => x.Id).GeneratedBy.Assigned();
        Map(x => x.Name);
        References(x => x.Device);
        HasMany(x => x.Numbers)
           .Not.Inverse()
           .Not.KeyNullable()
           .Cascade.AllDeleteOrphan()
           .Not.LazyLoad()
           .Fetch.Subselect();
        Table("Contacts");
    }


    public PhoneNumberMap()
    {
        Id(x => x.Id).GeneratedBy.Native();
        Map(x => x.Number);
        Table("ContactNumbers");
    }

Согласно этому сообщению после nhibernate 3 и выше, установка ключа как не -nullable должна исправить проблему обновления вставки -(Проблема, когда NHibernate выдает вставку с внешним ключом, установленным на ноль затем обновление для обновления внешнего ключа до правильного значения ), но это не для меня. Когда я устанавливаю ключ как необнуляемый, NHibernate выдает правильный оператор вставки

INSERT INTO ContactNumbers
            (Number,
             ContactId)
VALUES      ('(212) 121-212' /* @p0 */,
             10 /* @p1 */);

Как видите, он вставляет поле ContactId, но после этого все еще выдает оператор обновления

UPDATE ContactNumbers
SET    ContactId = 10 /* @p0 */
WHERE  Id = 34 /* @p1 */

Итак, для уточнения проблемы. NHibernate вставляет строку Contact с правильно назначенным внешним ключом и после этого выдает оператор обновления для обновления внешнего ключа (ContactId ), который является избыточным.

Как я могу избавиться от этого избыточного оператора обновления? Спасибо.

Кстати, я использую последнюю версию NHibernate и Fluent NHibernate. База данных - SQLite

10
задан Community 23 May 2017 в 12:01
поделиться