我正在尝试从DB连接两个表,但我需要在指定的列(而不是键)上加入它们。 表格如下:
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
答案 0 :(得分:1)
您可以将其映射为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
我不认为NHibernate目前可以做到这一点,因此不能使用Fluent NHibernate。
https://nhibernate.jira.com/browse/NH-1452
https://nhibernate.jira.com/browse/NH-3143