c# – 流畅的NHibernate加入约束

我有一个实体,其特性分布在两个表格中,我想使用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 ...
    }
}

我不确定如何解决两个名称在不同行上的问题.

点赞