我正在尝试使用流利的nhibernate自动映射我的域模型。在这种特殊情况下,我需要映射一个双向的一对多关系。问题在于它不会自动将其实现为双向关系,而是将其完全实现为两个不同的关系,并为每个关系创建单独的外键。
我如何告诉流利的hhibernate这是相同的关系?我希望我足够清楚。
最佳答案
您可以使用1.0RC覆盖自动映射。从SharpArchitecture从Employee到Territory的双向映射中尝试以下示例,其中Territory是关系的倒数:
public class EmployeeMap : IAutoMappingOverride<Employee>
{
public void Override(AutoMap<Employee> mapping) {
//... other omitted mappings...
mapping.HasManyToMany<Territory>(x => x.Territories)
.WithTableName("EmployeeTerritories")
.WithParentKeyColumn("EmployeeID")
.WithChildKeyColumn("TerritoryID")
.AsBag();
}
}
public class TerritoryMap : IAutoMappingOverride<Territory>
{
public void Override(AutoMap<Territory> mapping) {
//... other omitted mappings...
mapping.HasManyToMany<Employee>(x => x.Employees)
.WithTableName("EmployeeTerritories")
.Inverse()
.WithParentKeyColumn("TerritoryID")
.WithChildKeyColumn("EmployeeID")
.AsBag();
}
}