1

我正在尝试从数据库中加入两个表,但我需要将它们加入指定的列(而不是键)。表格如下所示:

EmplTable: Id, EmplId, FirstName, LastName
LoginTable: Id, EmplLoginId, Login

域对象员工:

public class Employee
{
    public virtual int Id { get; set; }
    public virtual String FirstName { get; set; }
    public virtual String LastName { get; set; }
    public virtual String Login { get; set; }
}

我的映射看起来像:

public EmployeeMap()
{
    Table("EmplTable");
    Id(x => x.Id).Column("Id");
    Map(x => x.FirstName).Column("FirstName");
    Map(x => x.LastName).Column("LastName");
    Join("LoginTable", m =>
    {
        m.Fetch.Join();
        m.KeyColumn("EmplId");
        m.Map(t => t.Login).Column("Login");
    });
}

我正在尝试做的是在EmplTable.EmplId=LoginTable.EmplLoginId上连接表 如何将连接列从Id更改为EmplId

4

1 回答 1

1

您可以将其映射为 amany-to-one并像这样映射它:

public EmployeeMap() {
    Table("EmplTable");
    Id(x => x.Id).Column("Id");
    Map(x => x.FirstName).Column("FirstName");
    Map(x => x.LastName).Column("LastName");
    References(x => x.Login, "EmplId")
        .Fetch.Join(); 
}

然后,您需要使用您的属性创建一个登录对象LoginTable

编辑:

我认为目前 NHibernate 无法做到这一点,因此 Fluent NHibernate 也无法做到这一点。

https://nhibernate.jira.com/browse/NH-1452
https://nhibernate.jira.com/browse/NH-3143

于 2012-05-16T01:08:10.193 回答