NHibernateでこの関係をモデル化する必要があります(トピックをそのまま残すためにコードを単純化しました) - 従業員はaccountmanagerになることができます):間違った(ブラウンフィールドの)データベーススキーマと1対1の関係をマッピングする
テーブル従業員(ID、番号、名前) テーブルEmployeeIsAccountManager(番号、MaxAllowedDiscount)
代わりテーブル従業員を指すテーブルEmployeeIsAccountManagerのid外部キーを有することが、私は、従業員の数値列を有しますEmployeeIsAccountManagerテーブルのNumberカラムを指すテーブル。
これを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。 btw:私はクラス、マッピングなどを変更することができますが、Brownfieldのステータス(2百万行以上のコードを持つ古いアプリケーション、ほぼ1000のフォーム)のためにテーブル構造を変更できません。
ご協力いただきありがとうございます。 Ted
プロパティ-refのマッピング属性を見上げて... – JulianM