当我尝试从映射文件中的主表中获取值时,我遇到了问题。
我的桌子:
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流畅的界面映射类中获取FullName值并映射到CustomerName属性?
答案 0 :(得分: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; }
}
答案 1 :(得分: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");
});
}