[英]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.