0

考虑以下类:

class Order {
    int OrderId {get; set;}
    int CustomerId {get; set;}
    string CustomerName {get; set;}
    //other fields go here
}

映射到 Orders 表。是否可以通过外键关系将属性 CustomerName 映射到 Customers 表?

4

2 回答 2

0

是的,您可以为此使用连接映射元素。另一种选择是映射视图而不是表。但如果可能,您应该采用面向对象的方法并映射 Order 和 Customer 之间的多对多关系。

于 2010-03-20T23:11:49.490 回答
0

我强烈建议你不要使用<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; } }
于 2010-03-21T21:06:58.997 回答