我在映射时遇到问题。
我的数据库中有两个表,如下所示:Employee 和 EmployeeManagers
员工
EmployeeId int 名称 nvarchar
员工经理
EmployeeIdFk int ManagerIdFk int
所以员工可以有0个或多个经理。经理本身也是员工。
我有以下类来代表员工和经理
public class Employee
{
public virtual int Id
{
get;
set;
}
public virtual string Name
{
get;
set;
}
public virtual IList<Employee> Managers
{
get;
protected set;
}
public Employee()
{
Managers = new List<Employee>();
}
}
我没有任何类来代表经理,因为我认为没有必要,因为经理本身就是员工。
我正在使用自动映射,我只是不知道如何将这个类映射到这两个表。我正在实现 IAutoMappingOverride 以覆盖 Employee 的自动映射,但我不确定在其中做什么。
public class NodeMap : IAutoMappingOverride
{
public void Override(AutoMapping<Node> mapping)
{
//mapping.HasMany(x => x.ValidParents).Cascade.All().Table("EmployeeManager");
//mapping.HasManyToMany(x => x.ValidParents).Cascade.All().Table("EmployeeManager");
}
}
我还想确保一个员工不能被分配两次同一个经理。这是我可以在我的应用程序中验证的内容,但我想对 EmployeeManager 表(例如复合键)施加约束,因此不能多次将同一经理分配给员工。
有人可以帮我解决这个问题吗?
等待纳比尔