У меня есть справочная таблица, содержащая продукты (таблица 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 об этой взаимосвязи, не пытаясь обновить Продукты?
Помощь будет наиболее ценной.