私はNHibernateでこの関係をモデル化する必要があります(トピックにとどまるためにコードを少し単純化しました)-従業員はアカウントマネージャーになることができます(したがって、それはオプションです):
テーブルEmployee(Id、Number、Name)テーブルEmployeeIsAccountManager(Number、MaxAllowedDiscount)
テーブルEmployeeIsAccountManagerのId外部キーがテーブルEmployeeを指す代わりに、テーブルEmployeeIsAccountManagerのNumber列を指すNumber列がEmployeeテーブルにあります。
これをNHibernateでマッピングするにはどうすればよいですか?EmployeeIsAccountManagerクラスマッピングで外部ジェネレーターを使用しようとしましたが、外部生成値としてNumberを使用すると、NumberではなくIdであるEmployeeのIDにマップされます。構成を使用するようにクラスをモデル化しました。
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 }
}
私はたくさん(1対1、多対1、外国の発電機)を試しましたが、これがNHibernateで実行できるかどうかわかりません。ところで:クラスやマッピングなどを変更することはできますが、ブラウンフィールドステータス(2百万行以上のコード、約1000フォームの古いアプリケーション)のため、テーブル構造を変更できません。
どんな助けでもありがたいです、ありがとう!テッド