2008-12-22 45 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"); 
     }); 
    }