Свободный внешний ключ NHibernate нулевой, из справочной таблицы - PullRequest
0 голосов
/ 04 ноября 2010

У меня есть справочная таблица, содержащая продукты (таблица Product), таблица CustomerOrder, содержащая сведения о заказе, и таблица OrderLines, содержащая строку для каждого заказанного продукта.

Итак, сущности выглядят примерно так

OrderLine

Id
..stuff..
Product

Продукт

Id
ProductInfo

Таблицы выглядят одинаково, за исключением того, что вместо Product есть внешний ключ ProductId. Переопределения сопоставления выглядят следующим образом

Для OrderLine

mapping.HasOne(x => x.Product)
        .Fetch.Join()
        .Cascade.All();

Это действительно так. Проблема заключается в том, что с приведенным выше оператором в качестве внешнего ключа ProductId вставляется значение NULL, если я удаляю сопоставление, оно работает правильно, но это вызывает многократные (как в тысячах) операции выбора в дальнейшем. Что мне здесь не хватает? Если я возвращаю виртуальную строку в OrderLine в Product, то NHibernate пытается обновить обе сущности (т. Е. Он пытается вставить новую запись в таблицу продукта, которая уже существует. Как мне сообщить NHibernate об этой взаимосвязи, не пытаясь обновить Продукты?

Помощь будет наиболее ценной.

1 Ответ

0 голосов
/ 10 сентября 2011

Используйте mapping.References(x => x.Product) вместо mapping.HasOne(x => x.Product).

...