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 に答える