很抱歉,如果標題是有點含糊,我有以下sceneraio: 我在我的域模型三個表如下: NHibernate的許多一對多的關係:Quering加盟表格的屬性
是有許多人在產品的實體,我有
public virtual IList<AddingOrder> AddingOrders { get; set; }
與FOL的AddingOrder
表和Product
表
之間有許多關係降脂映射:
<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的數量和單元ID和從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與提到的映射 爲了簡單起見,我省略了許多代碼,AddOrderProduct和其他兩個表之間沒有直接的一對多映射。併爲單位實體忘記它,這不是一個問題。
在此先感謝;
,所以我不得不刪除這兩個表之間兩個多對多關係和AddingOrderProduct和其他兩個表,這樣我就可以查詢在連接表的屬性之間添加兩個一個一對多reltions沒有方式比這個???。但我不想這樣做我想使用多對多的關係,它現在正在工作,我有order.Products和product.Orders和我可以查詢他們,這不是問題,問題是我如何可查詢的屬性上加入表像在問題中提到的SQL查詢AddingOrderProduct,感謝 –
@MGA是的,我不知道任何其他方式。 – cremor