1
我查看了nhibernate連接,但無法弄清連接是如何執行的。在這些示例中,它沒有提供執行連接的列。這些是根據映射自動執行的嗎?NHibernate HQL連接列
如果我有兩個實體並且它們之間有兩個單獨的關係,那麼這意味着有多個可能性加入這兩個實體?
我查看了nhibernate連接,但無法弄清連接是如何執行的。在這些示例中,它沒有提供執行連接的列。這些是根據映射自動執行的嗎?NHibernate HQL連接列
如果我有兩個實體並且它們之間有兩個單獨的關係,那麼這意味着有多個可能性加入這兩個實體?
答案是「這些是根據映射自動執行的」(正如你所說的)。
作爲NHibernate映射一部分的任何C#對象(POCO實體)都明確地連接到下表和列。任何關於實體級別(C#)的關係都與DB表關係類比。
的HQL例如文檔14.3. Associations and joins:
from Eg.Cat as cat
join cat.Mate as mate
left join cat.Kittens as kitten
...完成,並從映射的利潤。這提供了足夠的信息,如何貓和伴侶是相關的,如何加入它從文件獲得小貓
<?xml version="1.0"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Eg"
namespace="Eg">
<class name="Cat" table="CATS" discriminator-value="C">
<id name="Id" column="uid" type="Int64">
<generator class="hilo"/>
</id>
<discriminator column="subclass" type="Char"/>
<property name="BirthDate" type="Date"/>
<property name="Color" not-null="true"/>
<property name="Sex" not-null="true" update="false"/>
<property name="Weight"/>
<many-to-one name="Mate" column="mate_id"/>
<set name="Kittens">
<key column="mother_id"/>
<one-to-many class="Cat"/>
</set>
<subclass name="DomesticCat" discriminator-value="D">
<property name="Name" type="String"/>
</subclass>
</class>
<class name="Dog">
<!-- mapping for Dog could go here -->
</class>
</hibernate-mapping>
的加入 。所以如果我們去找一個伴侶,我們將使用表CATS
中的mate_id
這一列來從它的表中獲得Mate。當我們需要相同類型的兒童(Cat)時,我們將轉到表CATS
,並搜索列mother_id
等於當前id
列值的所有記錄。因此,「這些是基於映射自動執行的」