NHibernate映射自联接表?
|
这可能很简单,但我想我缺少了一些东西。我有一个自连接表
Units
,每个单元都有一个主单元:
这样我可以查询如下内容:
表“ 1”映射到以下类:
public class Units
{
public virtual int Unit_Id { get; private set; }
public virtual string Unit { get; set; }
public virtual decimal Unit_Value { get; set; }
public virtual Units Main_Unit { get; set; }
}
使用.hbm映射文件如下:
<?xml version=\"1.0\" encoding=\"utf-8\" ?>
<hibernate-mapping xmlns=\"urn:nhibernate-mapping-2.2\" assembly=\"NewA.Domain\" namespace=\"NewA.Domain\">
<class name=\"NewA.Domain.Entities.Units,NewA.Domain\" table=\"Units\">
<id name=\"Unit_Id\" column=\"Unit_Id\" type=\"Int32\" length=\"4\" unsaved-value=\"0\">
<generator class=\"native\">
</generator>
</id>
<property name=\"Unit\" column=\"Unit\" type=\"string\" length=\"50\" not-null=\"true\"/>
<one-to-one name=\"Main_Unit\" class=\"NewA.Domain.Entities.Units,NewA.Domain\"/>
</class>
</hibernate-mapping>
使用以下代码测试这些实体时:
Units unit = _UnitsRepository.GetById(2);
string parent_unitname = unit.Main_Unit.Unit;
Assert.AreEqual(\"pack\",parent_unitname);
我有以下例外:
Expected values to be equal.
Expected Value : \"pack\"
Actual Value : \"kg\"
问题是Unit
实体的Main_Unit
属性正在引用自身,因此我在这里缺少什么??以及如何编写类似递归SQL CTE的方法来应用等级等,因为与其他对象有相同的问题具有更复杂查询的复杂自连接表。
没有找到相关结果
已邀请:
1 个回复
辰炔诚薯
我建议您尝试Fluent NHibernate-它可以为您动态生成映射。 这是我使用的配置: