【问题标题】:NHibernate fluent mapping to an entity propertyNHibernate 流利映射到实体属性
【发布时间】:2015-06-06 16:25:56
【问题描述】:

我有一张名为“客户”的表格,在这张表格中有商店和办公地址。在代码中,有一个 Customer 类,它有两个类型为 Address 的属性(一个用于 StoreAddressOfficeAddress)。

public class Customer
{
    public virtual int Id { get; set;}
    public virtual string Name {get;set;}
    public virtual string Email {get; set;}
    public virtual Address StoreAddress {get; set;}
    public virtual Address OfficeAddress {get; set;}
}

public class Address
{
    public string Address1 {get; set;}
    public string Address2 {get; set;}
    public string State {get; set;}
    public string City {get; set;}
    public string Zip  {get; set;}
}

我可以映射不属于实体类型地址的项目,但不确定如何映射到客户实体中的另一个实体属性?..

Table("Customers");
Schema("dbo);
Id(x => x.ID).Column("CustomerId");
Map(x => x.Name);
Map(x => x.Email);

我如何能够从表 Customers 表映射到我的 StoreAddressOfficeAddress

【问题讨论】:

    标签: asp.net-mvc-4 nhibernate fluent-nhibernate nhibernate-mapping fluent-nhibernate-mapping


    【解决方案1】:

    你可以使用component mapping:

    Component(x => StoreAddress).ColumnPrefix("StoreAddress");
    Component(x => OfficeAddress).ColumnPrefix("OfficeAddress");
    

    然后为地址类型创建一个组件映射:

    public class AddressMap : ComponentMap<Address>
    {
        public AddressMap()
        {
            //map properterties
        }
    }
    

    【讨论】:

      【解决方案2】:

      如果我理解你的遗漏点,我们可以使用:

      References / many-to-one

      引用用于在两个实体之间创建多对一关系,并应用于“多方”。您正在引用单个其他实体,因此您使用 References 方法。 #HasMany / 一对多是引用关系的“另一面”,并被应用在“一方面”。

      Table("Customers");
      Schema("dbo);
      Id(x => x.ID).Column("CustomerId");
      Map(x => x.Name);
      Map(x => x.Email);
      // this is the fluent way for many-to-one
      References(x => x.StoreAddress);
      References(x => x.OfficeAddress); 
      

      References() 语法的完整概述可以在这里找到:Mapping-by-Code - ManyToOne(作者 Adam Bar) - 这是关于按代码映射,但提供了与流畅语法的比较(文章后半部分)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-06
        • 1970-01-01
        • 2012-09-28
        • 2011-06-18
        • 2010-12-26
        • 1970-01-01
        • 1970-01-01
        • 2013-06-26
        相关资源
        最近更新 更多