Fluent NHibernate 有很多外键映射问题

2024-01-12

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

Tables:

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

...以及员工映射

public class EmployeeMap : ClassMap<Employee>
{
    public EmployeeMap()
    {
        Id(x => x.EmployeeID, "employeeID");
        Map(x => x.UserName, "username").Length(30);

        References<Department>(x => x.Department, "departmentID");

        Table("Employees");
    }
}

我正在尝试遍历部门并提取每个部门的所有员工:

foreach (var i in _directoryData.DepartmentCollection)
{
    foreach (var e in i.Employees)
    {
        Debug.WriteLine(i.DepartmentName + " " + e.UserName);
    }
}

这给了我一个错误,指出“Invalid column name 'Department_id'.“ ...并且在生成的查询中它也使用department_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; }
}

您可以: 创建一个 Fluent NHibernate习俗所以这样HasMany“外键”创建为<'Name'>ID.

或者更改部门映射:

 HasMany(m => m.Employees).KeyColumns.Add("DepartmentID")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Fluent NHibernate 有很多外键映射问题 的相关文章

随机推荐