Fluent 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() {

我试图在nhibernate中映射一个简单的数据结构

表格:

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");