У меня есть следующая карта. Я хочу сопоставить BasketItem с классом «Продукт». Таким образом, в основном, когда я итерация через корзину я могу получить название продуктаnhibernate: один к одному
<class name="BasketItem" table="User_Current_Basket">
<id name="Id" type="Int32" column="Id" unsaved-value="0">
<generator class="identity"/>
</id>
<property name="ProductId" column="Item_ID" type="Int32"/>
<one-to-one name="Product"
class="Product"></one-to-one>
</class>
Как сделать продукт указать, какой должен соответствовать BasketItem.ProductId с Product.Id
Также я читал, что я должен избегать одно- к-одному и просто использовать один-ко-многим? Если бы я должен был сделать это, как я могу получить только один продукт, а не коллекцию.
// EDIT
select * from BasketItem
inner join Products on BasketItem.Item_ID = Products.Item_ID
спасибо, в отношении одного взаимно. Как «BasketItem» знает, что он должен соответствовать всем продуктам в basketItem.ProductId = product.Id. Я добавил несколько sql, которые могут сделать это ясным – frosty
@frosty Ну, это именно то, что говорит сопоставление, и это именно работа NHibernate (вам может потребоваться добавить атрибут 'column' в' one-to-one ', если вы не используете NHibernate по умолчанию). Ты пробовал? –
спасибо, я не смог найти свойство столбца один на один. Я настроил много-к-одному и, похоже, работает, за исключением того, что я думаю, что теперь у меня выпущена сессия. Я задал новый вопрос. – frosty