Как указать имя PK в таблице подклассов при использовании SubClass в FluentNHibernate? - PullRequest
0 голосов
/ 20 августа 2010

Я пытаюсь сопоставить подкласс в Fluent NHibernate.

В отображении родительского класса я должен указать имя столбца идентификатора, чтобы предотвратить неправильное угадывание FNH:

Id(x => x.Id).Column("UserId");

Мне также нужно указать имя поля идентификатора (или внешнего ключа, если хотите) в отображении подкласса, поскольку FNH также неправильно это угадывает. Как мне это сделать?

1 Ответ

0 голосов
/ 23 августа 2010

Я не нашел способа напрямую изменить сам файл сопоставления, но обнаружил, что переопределение соглашения о внешнем ключе Fluent NHibernate помогло:

public class FKConvention : ForeignKeyConvention
{
  protected override string GetKeyName(FluentNHibernate.Member property, Type type)
  {
    if (property == null)
    {
      // Relationship is many-to-many, one-to-many or join.
      if (type == null)
        throw new ArgumentNullException("type");
      return type.Name + "Id";
    }
    // Relationship is many-to-one.
    return property.Name + "Id";
  }
}

Новое соглашение должно быть зарегистрировано, как описано в нижней части этой страницы: http://wiki.fluentnhibernate.org/Conventions.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...