Извините, если название немного расплывчато, у меня есть следующий сценарий:
У меня есть три таблицы в моей модели домена следующим образом:
существует отношение многие ко многим между таблицей AddingOrder
и таблицей Product
в сущности Product у меня есть
public virtual IList<AddingOrder> AddingOrders { get; set; }
со следующим отображением:
<bag name="AddingOrders" generic="true" table="AddingOrderProduct">
<key column="ProductId"/>
<many-to-many column="OrderId" class="Application.Domain.Entities.AddingOrder,Application.Domain"/>
</bag>
в сущности AddingOrder у меня есть
public virtual IList<Product> Products { get; set; }
со следующим файлом сопоставления:
<bag name="Products" generic="true" table="AddingOrderProduct">
<key column="OrderId"/>
<many-to-many column="ProductId" class="Application.Domain.Entities.Product,Application.Domain"/>
</bag>
и это сущность, которая отображается на присоединяющуюся таблицу
public class AddingOrderProduct
{
public virtual int Id { get; private set; }
public virtual decimal Quantity { get; set; }
public virtual Unit Unit { get; set; }
}
и его отображение:
<id name="Id" column="Id">
<generator class="native" >
</generator>
</id>
<property name="Quantity" type="Decimal" column="Quantity" />
<many-to-one name="Unit" column="Id" not-null="true" class="Application.Domain.Entities.Unit,Application.Domain" />
Пока все хорошо, все работает без проблем.
вопрос: Как я могу запросить свойства в таблице соединений AddingOrderProduct
и объединить их с двумя другими сторонами отношения ?? (две другие таблицы), нужно ли мне дополнительное отображение между этой таблицей и двумя другими таблицами , например, ниже приведен SQL-запрос, который возвращает список продуктов с указанным количеством и единицей, которые относятся к заказу № 1, название продукта из таблицы продуктов а также количество и идентификатор единицы из таблицы присоединения AddingOrderProduct, а также идентификатор заказа из таблицы AddingOrder:
select p.Name ,aop.Quantity ,u.Name
from Product p
inner join AddingOrderProduct aop on p.Id = aop.ProductId
inner join AddingOrder ao on ao.Id = aop.OrderId
inner join Unit u on u.Id = aop.UnitId
where ao.Id = 1
как я могу написать этот запрос с NHibernate с упомянутыми сопоставлениями
я пропустил много кода просто для простоты, и нет прямого сопоставления один-ко-многим между AddingOrderProduct и двумя другими таблицами. а для юнит-единицы забудьте об этом, это не проблема.
Заранее спасибо;