流畅的NHibernate Automapping双向关系

时间:2009-09-03 12:33:51

标签: nhibernate fluent-nhibernate

我正在尝试使用流畅的nhibernate自动化我的域模型。在这种特殊情况下,我有一个双向的一对多关系,我需要映射。问题是它不会自动将其视为双向关系,而是作为两个不同的关系,并为每个关系创建一个单独的外键。

我如何告诉流利的nhibernate它是相同的关系?我希望我足够清楚。

1 个答案:

答案 0 :(得分:3)

您可以使用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();
    }
}