考虑以下类:
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 表?
是的,您可以为此使用连接映射元素。另一种选择是映射视图而不是表。但如果可能,您应该采用面向对象的方法并映射 Order 和 Customer 之间的多对多关系。
我强烈建议你不要使用<join/>
它。虽然它会完成您的要求,但它会产生其他问题。
相反,Order 应该与 Customer 有关系。然后,您可以根据需要投影名称,尽管使用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; } }