假设我有这个域对象......
public class SpansMultipleTables
{
public int CommonID {get; set;}
public string Table1Value {get; set;}
public int Table2Value {get; set;}
public float Table3Value {get; set;}
}
使用FluentNHibernate,我如何为这个真正没有中央表的对象设置地图呢?
答案 0 :(得分:5)
试试Join
,但我建议您更改设计。
public class SpansMultipleTablesMap : ClassMap<SpansMultipleTables>
{
public SpansMultipleTablesMap()
{
Id(x => x.CommonID);
Join("Table1", m =>
{
m.Map(x => x.Table1Value, "Value");
});
Join("Table2", m =>
{
m.Map(x => x.Table2Value, "Value");
});
Join("Table3", m =>
{
m.Map(x => x.Table3Value, "Value");
});
}
}
答案 1 :(得分:0)
我不是专家,但我不确定NHibernate是否可以轻松处理这样的映射。如果您能够修改架构,则可以定义一个“主”表,该表只有CommonID作为主键。然后,主表的类可以通过它们与主表的关系将其他表映射为属性。另一个选项可能是将其中一个表指定为主表,并将其他表映射为主类的属性。在任何情况下,在这些表之间创建一些FK关系可能是个好主意,以保证组合的“实体”不能单独删除它的部分。