考虑A,B和C类,A和B都有Cs的集合。我想将这些集合映射到不同的表,所以我有表A_C和B_C。我试着这样做:
public class AMap : ClassMap<A>
{
Public AMap()
{
Id(x => x.Id).GeneratedBy.Identity();
HasMany(x => x.Cs).Table("A_C");
}
}
public class BMap : ClassMap<B>
{
Public BMap()
{
Id(x => x.Id).GeneratedBy.Identity();
HasMany(x => x.Cs).Table("B_C");
}
}
public class CMap : ClassMap<C>
{
Public CMap()
{
Id(x => x.Id).GeneratedBy.Identity();
}
}
..(带有一些额外的属性),但它仍然只创建一个名为“C”的表。那么正确的方法是什么?
答案 0 :(得分:1)
我会说,继续制作单独的表(不依赖于架构导出而自己)并按照您知道应该工作的方式正确配置映射。只要你正确配置了东西,NHibernate就应该解决问题。您可能必须告诉它要加入的键列的名称。您仍然可以使用模式导出来生成其他表。完成后,继续使用NHibernate并添加额外的表格。
public class AMap : ClassMap<A>
{
Public AMap()
{
// ...
HasMany(x => x.Cs).Table("A_C").KeyColumn("TheNameOfA'sPrimaryKeyColumn");
}
}
public class BMap : ClassMap<B>
{
Public BMap()
{
// ...
HasMany(x => x.Cs).Table("B_C").KeyColumn("TheNameOfB'sPrimaryKeyColumn");
}
}
NHibernate应该正确地进行连接。如果没有,请告诉我。此外,如果您正在处理复合键并需要帮助,请告诉我。