考虑以下课程:
class Order {
int OrderId {get; set;}
int CustomerId {get; set;}
string CustomerName {get; set;}
//other fields go here
}
映射到Orders表。是否可以通过外键关系将属性CustomerName映射到Customers表?
答案 0 :(得分:0)
是的,您可以使用join映射元素。另一种选择是映射视图而不是表。但是如果可能的话,你应该采用面向对象的方法并映射Order和Customer之间的多对多关系。
答案 1 :(得分:0)
我强烈建议您不要使用<join/>
。虽然它可以完成您的要求,但它会产生其他问题。
相反,订单应与客户建立关系。然后,您可以根据需要投影名称,尽管使用order.Customer.Name
更容易。
所以,归结为:
1)将Customer
属性添加到Order
public virtual Customer Customer { get; set; }
2)映射属性(在示例中,CustomerId是FK列的名称)
<many-to-one name="Customer" column="CustomerId"/>
3)如果您特别想拥有CustomerName
属性,请从客户预测:
public virtual string CustomerName { get { return Customer.Name; } }