0

当我尝试从映射文件中的主表中获取值时,我遇到了一个问题。

我的桌子:

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

如何获取 FullName 值并映射到 CustomerOrder 流畅接口映射类中的 CustomerName 属性?

4

2 回答 2

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; }
}
于 2008-12-22T11:53:59.537 回答
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");
        });
    }
于 2008-12-22T12:21:10.980 回答