要实现内部连接,您必须在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>
感谢兰迪!我开始怀疑,当我在互联网上搜索没有找到一个我想要的方式指定键的例子。有时,当你真正知道查询将会是什么时,感觉非常愚蠢,但是要求通过orm映射来完成。 – dreamerkumar