.net 如何映射以从Nhibernate中的主表中获取值?
当我试图从映射文件的主表中获取值时,我会遇到一个问题 我的桌子:.net 如何映射以从Nhibernate中的主表中获取值?,.net,nhibernate,fluent-nhibernate,nhibernate-mapping,.net,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,当我试图从映射文件的主表中获取值时,我会遇到一个问题 我的桌子: CREATE TABLE Customer ( [CustomerId] INT PRIMARY KEY, [FullName] NVARCHAR(50) NOT NULL ) CREATE TABLE CustomerOrder ( [CustomerOrderId] INT PRIMARY KEY, [CustomerId] INT, [TransactionDate] DATETIM
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 fluent接口映射类中获取全名值并映射到CustomerName属性?实际上,您不会这样做。更好的设计是拥有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);
}
}
如果您确实想拥有CustomerName
属性,可以在CustomerOrder
上创建委派属性
public string CustomerName
{
get { return Customer.FullName; }
}
如果要使用Fluent NHibernate将一个类映射到多个表,可以使用“WithTable”方法
public string CustomerName
{
get { return Customer.FullName; }
}
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");
});
}