内部結合を実現するには、NHibernate マッピングで Store エンティティと Region エンティティ間の関係をセットアップする必要があります。
QueryOver API を使用して結合するキーを指定することはできません。
クラスは次のようになります。
public class Region
{
public virtual int RegionID { get; set;}
public virtual IList<Store> Stores { get; set; }
}
public class Store
{
public virtual int StoreId { get; set;}
public virtual Region Region { get; set; }
}
マッピングは次のようになります。
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class xmlns="urn:nhibernate-mapping-2.2" name="YourNameSpace.Region, YourNameSpace" table="Region">
<id name="RegionID">
<column name="RegionID" />
<generator class="identity" />
</id>
<bag cascade="all" inverse="true" name="Stores">
<key>
<column name="RegionID" />
</key>
<one-to-many class="YourNameSpace.Store, YourNameSpace" />
</bag>
</class>
</hibernate-mapping>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class xmlns="urn:nhibernate-mapping-2.2" name="YourNameSpace.Store, YourNameSpace" table="Store">
<id name="StoreID">
<column name="StoreID" />
<generator class="identity" />
</id>
<many-to-one class="YourNameSpace.Region, YourNameSpace" name="Region">
<column name="RegionId" />
</many-to-one>
</class>
</hibernate-mapping>