Никогда раньше не задавал вопрос здесь, я постараюсь изложить это максимально кратко.
У меня есть класс Recipe, который содержит списки трех разных типов использования ингредиентов. Все эти классы наследуются от базового, IngredientUse. Таким образом, отображение выглядит так:
<class name="IngredientUse" table="IngredientUses">
<id name="Id" type="Int64" column="Id">
<generator class="native"/>
</id>
<!--some other properties-->
<property name="RecipeId" column="RecipeId"/>
<joined-subclass name="AdditionUse" table="AdditionUses">
<key column="Id" foreign-key="FK_AdditionUses_IngredientUses"/>
<many-to-one name="AdditionUsed" column="AdditionUsed" class="Addition" foreign-key="FK_AdditionUses_Additions"/>
</joined-subclass>
</class>
Проблема, вызывающая проблемы, - это RecipeId. Из рецепта у меня есть три отдельных списка использования для различных типов ингредиентов, определенных так:
<bag name="AdditionsUsed" cascade="all" lazy="false">
<key column="RecipeId"/>
<one-to-many class="AdditionUse"/>
</bag>
Теперь у меня проблемы с загрузкой этих списков. Это как-то связано с наследством. Когда я смотрю на SQL Generated, я вижу это:
SELECT additionsused0_.RecipeId as RecipeId1_
--other columns not really important
FROM AdditionUses additionsused0_
inner join IngredientUses additionsused0_1_
on additionsused0_.Id=additionsused0_1_.Id
WHERE additionsused0_.RecipeId=@p0; @p0 = '11'
Обратите внимание, что он ищет таблицу RecipeId в подклассе, а не базовую таблицу, в которой фактически содержится столбец. Я знаю, что мог бы просто определить отдельную таблицу для каждого типа ингредиента, но это вызовет у меня проблемы, потому что в некоторых ситуациях (например, ценообразование) мне не нужны дополнительные столбцы в таблице подклассов, и я хотел бы иметь возможность загрузить все ингредиенты в один и тот же список одновременно.
Я уверен, что я, должно быть, что-то здесь упускаю, подумал, что кто-то, более знакомый с NHibernate на этом сайте, может сразу же узнать это.
Заранее спасибо.
edit: на случай, если мне непонятно, что я пытаюсь сделать, эта диаграмма может помочь (извините за мой дурацкий UML, надеюсь, что он не мутит воду). Существует также базовый класс Ingredient и те же самые подтипы.
![diagram](https://farm4.static.flickr.com/3565/3319584915_ac1a3ce005.jpg?v=0)