繁体   English   中英

流利的NHibernate连接表不在主键上

[英]Fluent NHibernate Join Table not on primary Key

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

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

域对象Employee:

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

您可以将其映射为many-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的属性创建一个Login对象。

编辑:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM