通过流畅的nhibernate,我不能使用约定自动化,因为它为关系表增加了额外的外键。 stackoverflow.com/questions/6091654/fluentnhibernate-automapping-onetomany-relation-using-attribute-and-convention/7867516
详细解释了这个问题但正如您所看到的,它是通过使用属性来解决的。我的问题是:
我不想在模型属性上使用属性。因为我们可能在接下来的几年里不会在项目中使用nhibernate。所以我不想触摸模特。没有KeyColumnAttribute是否有解决问题的方法。
由于
答案 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");
}
}