Fluent NHibernate:约定/键列

Fluent NHibernate:约定/键列,nhibernate,orm,fluent-nhibernate,nhibernate-mapping,fluent-nhibernate-mapping,Nhibernate,Orm,Fluent Nhibernate,Nhibernate Mapping,Fluent Nhibernate Mapping,在代码下面,客户可以有多个地址。有一对多的关系。我希望地址表中的FK字段名为Customer,而不是Customer\u id 我试图补充: .KeyColumnCustomer>无变化 我试图用改变外国人的习惯,但没有改变 有什么想法吗 public class CustomerMap : ClassMap<Customer> { protected CustomerMap() { Id(x => x.Id).Not.Nullable();

在代码下面,客户可以有多个地址。有一对多的关系。我希望地址表中的FK字段名为Customer,而不是Customer\u id

我试图补充: .KeyColumnCustomer>无变化

我试图用改变外国人的习惯,但没有改变

有什么想法吗

public class CustomerMap : ClassMap<Customer>
{
    protected CustomerMap()
    {
        Id(x => x.Id).Not.Nullable();
        Map(x => x.FirstName).Not.Nullable().Length(25);
        Map(x => x.LastName);
        HasMany<Address>(x => x.Addresses)                
            .KeyColumn("Customer")
            .AsSet()
            .Inverse()
            .Cascade.AllDeleteOrphan();
    }
}

public class AddressMap : ClassMap<Address>
{
    public AddressMap()
    {
        Id(x => x.Id);
        Map(x => x.City).Not.Nullable().Length(100);
    }
}

public class ForeignKeyReferenceConvention : IHasManyConvention
{
    public void Apply(IOneToManyCollectionInstance instance)
    {
        instance.Key.PropertyRef("EntityId");
    }
}

public void DBCreation()
{
    FluentConfiguration config = Fluently.Configure()
        .Database(MsSqlConfiguration.MsSql2008.ConnectionString("...."))
        .Mappings(m =>
            m.AutoMappings
                .Add(AutoMap.AssemblyOf<Customer>())
                .Add(AutoMap.AssemblyOf<Address>()
                    .Conventions.Setup(c => c.Add<ForeignKeyReferenceConvention>())
                    )
                );

    config.ExposeConfiguration(
              c => new SchemaExport(c).Execute(true, true, false))
         .BuildConfiguration();
}

我自己从来没有使用过自动映射,但是ClassMap不是只用于默认的fluent映射而不是自动映射吗?您想使用fluent映射还是自动映射

为什么你的一对多反转,虽然你没有多对一的映射


顺便问一句,这个大会的目的是什么?除非绝对需要,否则不应使用PropertyRef。NHibernate无法对此进行一些优化。

您的答案与其说是答案,不如说是评论。目的是匹配一个非新数据库。@Kris-I是的,对不起,应该是一个注释。顺便说一句,我已经编辑了我的答案,你很可能在混合流畅映射和自动映射方面有问题。