Как сопоставить, чтобы получить значение из первичной таблицы в Nhibernate? - PullRequest
0 голосов
/ 22 декабря 2008

Я сталкиваюсь с проблемой, когда пытаюсь получить значение из первичной таблицы в моем файле отображения.

Мои таблицы:

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 и сопоставить его со свойством CustomerName в моем классе сопоставления беглого интерфейса CustomerOrder?

Ответы [ 2 ]

1 голос
/ 22 декабря 2008

Вы бы не стали, правда. Лучше было бы иметь свойство 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 голосов
/ 22 декабря 2008

Если вы хотите отобразить класс на несколько таблиц с помощью 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");
        });
    }
...