我很难用流利NHibernate映射数据库。我正在处理的数据库是brownfield,一些关系实施得不好。流利的NHibernate映射问题
我试图通过如下表所述进行映射:
+----------+ +----------+ +---------------+ +-------------------+
| ToolA | | ToolB | | ToolPurpose | | ToolInstruction |
+==========+ +==========+ +===============+ +===================+
| ToolA_Id | | ToolB_Id | | Purpose_Id | | ToolInstruction_Id|
| Name | | Name | | ToolA_Id | | Purpose_Id |
+----------+ +----------+ | ToolB_Id | | Instruction |
| Purpose | +-------------------+
+---------------+
什么我希望做的是表ToolA与表ToolInstruction映射获取类,如:
public class ToolA
{
public virtual int _ToolA_id { get; set; }
public virtual string _Name { get; set; }
public virtual string _Instruction { get; set; }
}
OR
public class ToolA
{
public virtual int _ToolA_id { get; set; }
public virtual string _Name { get; set; }
public virtual ToolInstruction _ToolInstruction{ get; set; }
}
public class ToolInstruction
{
public virtual string _Instruction { get; set; }
}
我认为是什么原因造成我的困难是ToolPurpose表对于每个ToolA和ToolB条目都有一行,因此对于ToolA条目,ToolB_Id为空,反之亦然。
例如:
+--------------------------------------------------+
|Purpose_Id | ToolA_Id | ToolB_Id | Purpose |
|===================================================
|1 | 1 | null | "purpose here" |
|2 | null | 1 | "purpose here" |
+--------------------------------------------------+
我已经尝试了一些方法来这一点,他们表现出的工作使用PersistenceSpecification.VerifyTheMappings()方法时的迹象,但不是当我试图从拉数据备份数据库,因为我开始运行到空引用异常。
我试着将ToolPurpose映射为一个链接器类,并试图通过使用ToolA映射类中的Join方法来映射它。我也交替使用HasOne和HasMany来查看哪些是合适的。
我希望有人能指出我在正确的方向,通过规划他们将如何做,或者如果他们看到我如何接近它的任何问题。
您是否可以更改数据库以及您的域对象,还是该固定点? – docmanhattan
数据库已修复。 –