FluentNHibernate:自动化OneToMany关系

时间:2011-12-08 07:04:45

标签: c# fluent-nhibernate convention

通过流畅的nhibernate,我不能使用约定自动化,因为它为关系表增加了额外的外键。 stackoverflow.com/questions/6091654/fluentnhibernate-automapping-onetomany-relation-using-attribute-and-convention/7867516

详细解释了这个问题

但正如您所看到的,它是通过使用属性来解决的。我的问题是:

我不想在模型属性上使用属性。因为我们可能在接下来的几年里不会在项目中使用nhibernate。所以我不想触摸模特。没有KeyColumnAttribute是否有解决问题的方法。

由于

1 个答案:

答案 0 :(得分:0)

class BiDirectionalHasManyConvention : IReferenceConvention, IHasManyConvention
{
    public void Apply(IOneToManyCollectionInstance instance)
    {
        // looks for a Property which references the type containing the collection
        var referenceProperty = instance.ChildType.GetProperties()
            .First(prop => prop.PropertyType == instance.EntityType);

        instance.Key.Column(referenceProperty.Name + "Id");
    }

    // Optional, just to make sure the foreignkey column is propertyname + "Id"
    public void Apply(IManyToOneInstance instance)
    {
        instance.Column(instance.Name + "Id");
    }
}