次のクラスを検討してください。
class Order {
int OrderId {get; set;}
int CustomerId {get; set;}
string CustomerName {get; set;}
//other fields go here
}
これはOrdersテーブルにマップされます。外部キー関係を介してプロパティCustomerNameをCustomersテーブルにマップすることは可能ですか?
次のクラスを検討してください。
class Order {
int OrderId {get; set;}
int CustomerId {get; set;}
string CustomerName {get; set;}
//other fields go here
}
これはOrdersテーブルにマップされます。外部キー関係を介してプロパティCustomerNameをCustomersテーブルにマップすることは可能ですか?
はい、これには結合マッピング要素を使用できます。もう 1 つのオプションは、テーブルの代わりにビューをマップすることです。ただし、可能であれば、オブジェクト指向のアプローチを採用して、Order と Customer の間の多対多の関係をマッピングする必要があります。
これには使用しないことを強くお勧めします<join/>
。要求したことは達成できますが、別の問題が生じます。
代わりに、Order には Customer との関係が必要です。を使用する方が簡単ですが、必要に応じて名前を投影できますorder.Customer.Name
。
したがって、要約すると次のようになります。
Customer
1)プロパティを追加Order
public virtual Customer Customer { get; set; }
2) プロパティをマップします (この例では、CustomerId は FK 列の名前です)
<many-to-one name="Customer" column="CustomerId"/>
3) 特にプロパティが必要な場合はCustomerName
、それを Customer から射影します。
public virtual string CustomerName { get { return Customer.Name; } }