我有一个实体,其特性分布在两个表格中,我想使用Fluent NHibernate映射到一个类,但是对连接表有约束.
我已经将这个问题的领域改为熟悉的“客户”领域,所以我的例子可能有点人为,但它说明了我的问题.这是基本的;我有一个Customer表,其中包含一些客户属性,但客户的名字和姓氏都保存在一个单独的CustomerName表中,因为两行链接到客户并标识为名字和姓氏.
以下是表模式:
CREATE TABLE客户(
CustomerId int,
生日日期
)
CREATE TABLE客户名称(
CustomerId int NOT NULL,
CustomerNameTypeId int NOT NULL,
名称nvarchar(25)NOT NULL
)
CREATE TABLE CustomerNameTypes(
CustomerNameTypeId NOT NULL,
描述nvarchar(25)NOT NULL
)
CustomerNameTypes表包含两行:
1,“FirstName”
2,“SecondName”
我需要的是一个Fluent Mapping,它将上面的内容映射到以下内容:
public class Customer
{
public virtual int CustomerId { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual DateTime Birthday { get; set; }
}
有人可以帮忙吗?!
提前谢谢了
克里斯布朗
最佳答案 我知道这并没有完全回答你的要求,但……
如果LastName和FirstName都在CustomerName表的同一行上(但它们不是),则可以使用< join>完成此操作.映射. Ayende describes this HBM mapping在他的博客上.这里有一个流畅的nhibernate示例:Entity spanning multiple tables.方法名称从WithTable()更改为Join().这是它的样子:
public class CustomerMap : ClassMap<Customer>
{
public CustomerMap()
{
Id(x => x.CustomerId);
Join("CustomerName", m =>
{
m.Map(x => x.FirstName);
m.Map(x => x.LastName);
});
// ... other properties ...
}
}
我不确定如何解决两个名称在不同行上的问题.