2008-12-22 51 views
0

我在我的映射文件中尝试从主表获取值时遇到问题。如何映射从Nhibernate中的主表获取值?

我的表:

CREATE TABLE Customer 
(
    [CustomerId] INT PRIMARY KEY, 
    [FullName] NVARCHAR(50) NOT NULL 
) 

CREATE TABLE CustomerOrder 
(
    [CustomerOrderId] INT PRIMARY KEY, 
    [CustomerId] INT, 
    [TransactionDate] DATETIME 
) 

我的课:

public class CustomerOrder 
{ 
    public class Id {get; set;} 
    public class CustomerName {get; set;} 
    public class TransactionDate {get; set;} 
} 
... 

如何,我可以得到全名和值映射到客户名称属性在我CustomerOrder流利的接口映射类?

回答

1

你不会,真的。更好的设计是拥有一个Customer属性,它是一个Customer类的实例。

public class CustomerOrder 
{ 
    public int Id { get; set; } 
    public Customer Customer { get; set; } 
} 

public class CustomerOrderMap : ClassMap<CustomerOrder> 
{ 
    public CustomerOrderMap() 
    { 
    Id(x => x.Id); 
    References(x => x.Customer); 
    } 
} 

然后您可以使用像这样:

customerOrder.Customer.FullName 

如果你真的想有一个CustomerName属性,你可以在CustomerOrder创建一个委托财产。

public string CustomerName 
{ 
    get { return Customer.FullName; } 
} 
0

如果要使用Fluent-NHibernate将类映射到多个表,可以使用“WithTable”方法。

public CustomerOrderMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.TransactionDate); 

     WithTable("Customer", m => 
     { 
      // Use .TheColumnNameIs since the property name is different from the column name 
      m.Map(x => x.CustomerName) 
       .TheColumnNameIs("FullName"); 
     }); 
    }