代码之家  ›  专栏  ›  技术社区  ›  K.A.D.

从NHibernate中的另一个表将属性映射到字段

  •  0
  • K.A.D.  · 技术社区  · 15 年前

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

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

    2 回复  |  直到 15 年前
        1
  •  0
  •   Jamie Ide    15 年前

    是的,你可以用 join 此的映射元素。另一种选择是映射视图而不是表。但如果可能的话,您应该采用面向对象的方法,映射订单和客户之间的多对多关系。

        2
  •  0
  •   Diego Mijelshon    15 年前

    <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; } }