FluentNHibernate: автоматическое сопоставление отношений OneToMany - PullRequest
1 голос
/ 08 декабря 2011

через свободный nhibernate, я не могу использовать autopping с соглашениями, потому что он добавляет дополнительный внешний ключ в таблицу для отношений.Эта проблема была подробно объяснена на stackoverflow.com / questions / 6091654 / fluentnhibernate-autopping-onetomany-отношение-использование-атрибут-и-соглашения / 7867516

Но как вы можете видетьэто решается с помощью атрибута.Мой вопрос:

Я не хочу использовать атрибут в свойствах модели.Потому что мы, возможно, не будем использовать nhibernate в проекте в последующие годы.Поэтому я не хочу касаться моделей.Есть ли решение проблемы без KeyColumnAttribute.

Спасибо

1 Ответ

0 голосов
/ 08 декабря 2011
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");
    }
}
...