Отображение NHibernate 3.2 по соглашению, создающее ненужный столбец внешнего ключа - PullRequest
0 голосов
/ 29 марта 2012

У меня есть пара классов, которые выглядят следующим образом:

public class Client
{
    public int Id {get;set;}
    public string Name {get;set;}
}

public class User
{
    public int Id {get;set;}
    public string Email {get;set;}
    public Client Client {get;set;}
}

Я использую ConventionModelMapper и SchemaUpdate из NHibernate 3.2 для генерации схемы в моей базе данных SQL Server, и я хочу, чтобы свойство Client былоПользовательский класс, который будет отображен в столбец ClientId с внешним ключом.Мой код соглашения выглядит следующим образом:

mapper.AfterMapManyToOne += (inspector, member, map) =>
{
    map.Column(member.LocalMember.Name + "Id");
    // ...
};

Это работает, я получаю столбец ClientId, который отображается как внешний ключ, но я также получаю столбец Client, который такжеотображается как внешний ключ.Похоже, что NHibernate рассматривает свойство Client как стандартное свойство (и, следовательно, создает для него столбец Client), а также свойство ManyToOne (в результате появляется дополнительный столбец ClientId).Как я могу предотвратить создание столбца Client

1 Ответ

0 голосов
/ 31 марта 2012

Я только что скопировал ваш EXACT-код, и после того, как свойства стали виртуальными, поведение ожидается (есть один столбец, ClientId)

...