Мне нужно смоделировать эти отношения в NHibernate (немного упростил код, чтобы оставаться в курсе) - сотрудник может быть менеджером по работе с клиентами (так что это необязательно):
таблица Сотрудник (Id, Number, Name)
таблица EmployeeIsAccountManager (Number, MaxAllowedDiscount)
вместо того, чтобы иметь внешний ключ Id в таблице EmployeeIsAccountManager, указывающей на таблицу Employee, у меня есть столбец Number в таблице Employee, который указывает на столбец Number в таблице EmployeeIsAccountManager.
Как мне отобразить это в NHibernate? Я попытался использовать внешний генератор в отображении класса EmployeeIsAccountManager, но если я использую Number в качестве внешнего сгенерированного значения, он сопоставляется с идентификатором Employee, который является Id вместо Number. Я смоделировал свой класс, чтобы использовать композицию:
public class Employee
{
public virtual int Id { get; set; }
public virtual short Number {get; set; }
public virtual string Name {get; set; }
public virtual AccountManager AccountManager { get; set; }
}
public class AccountManager
{
public virtual short Number { get; set; } /*needed because of ID only?*/
public virtual decimal MaxAllowedDiscount { get; set }
}
Я много пробовал (один-к-одному, много-к-одному, чужой генератор), но я не могу понять, можно ли это сделать с помощью NHibernate. Кстати: я могу изменить классы, отображения и т. д., но я НЕ МОГУ изменить структуру таблицы из-за ее статуса в коричневом поле (старое приложение с 2+ миллионами строк кода, почти 1000 форм).
Любая помощь приветствуется, спасибо!
Тед