Fluent NHibernate有许多外键映射问题
我试图在nhibernate中映射一个简单的数据结构 表格:Fluent NHibernate有许多外键映射问题,nhibernate,fluent-nhibernate,fluent-nhibernate-mapping,Nhibernate,Fluent Nhibernate,Fluent Nhibernate Mapping,我试图在nhibernate中映射一个简单的数据结构 表格: Employees employeeID int username varchar(30) departmentID int Departments departmentID int deptName varchar(50) 我所在的部门是这样的: public class DepartmentMap: ClassMap<Department> { public DepartmentMap() {
Employees
employeeID int
username varchar(30)
departmentID int
Departments
departmentID int
deptName varchar(50)
我所在的部门是这样的:
public class DepartmentMap: ClassMap<Department>
{
public DepartmentMap()
{
Id(m => m.DepartmentID).Column("departmentID");
Map(m => m.DepartmentName).Column("deptName").Length(50);
HasMany(m => m.Employees);
Table("Departments");
}
}
这给了我一个错误,说明“无效的列名'Department\u id'。
”。。。在生成的查询中,它还使用部门id。当我循环遍历部门并输出部门名称时,它工作得很好
知道我在获取部门ID的正确列名时遗漏了什么吗?以下是我的模型对象,以防万一:
public class Department
{
public virtual int DepartmentID { get; set; }
public virtual string DepartmentName { get; set; }
public virtual ICollection<Employee> Employees { get; set; }
}
public class Employee : PersistentEntity
{
public virtual int EmployeeID { get; set; }
public virtual string UserName { get; set; }
public virtual Department Department { get; set; }
}
公共课部
{
公共虚拟int部门ID{get;set;}
公共虚拟字符串DepartmentName{get;set;}
公共虚拟ICollection雇员{get;set;}
}
公共类员工:PersistentEntity
{
公共虚拟int EmployeeID{get;set;}
公共虚拟字符串用户名{get;set;}
公共虚拟部门部门{get;set;}
}
您可以选择:创建一个流畅的NHibernate约定,以便有许多
“外键”被创建为ID
或更改部门映射:
HasMany(m => m.Employees).KeyColumns.Add("DepartmentID")
您需要指定键列
HasMany(m => m.Employees).KeyColumn("DepartmentId");
您需要在HasMany声明上使用
KeyColumn
方法,如@David中所述-是的,我使用了。我的映射似乎与fluentnhibernates网站上的映射wiki相同。谢谢,我一定忽略了FluentsWiki中的这一部分。
HasMany(m => m.Employees).KeyColumns.Add("DepartmentID")
HasMany(m => m.Employees).KeyColumn("DepartmentId");