我可以在实体框架5,c#中的两个实体之间创建多个关联吗?

我可以在实体框架5,c#中的两个实体之间创建多个关联吗?,c#,database,entity-framework,entity-framework-5,entity-relationship,C#,Database,Entity Framework,Entity Framework 5,Entity Relationship,例如,我有两个实体: public class Department { public Guid Id { get; set; } public string Name { get; set; } public ICollection<Employee> Employees { get; set; } public Employee Manager { get; set; } } public class Employee { public

例如,我有两个实体:

public class Department
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public ICollection<Employee> Employees { get; set; }
    public Employee Manager { get; set; }
}

public class Employee
{
    public Guid Id { get; set; }
    public string FullName { get; set; }

    [ForeignKey("DepartmentId")]
    public Department Department { get; set; }
    public Guid DepartmentId { get; set; }
    public string Position { get; set; }
}
公共课部
{
公共Guid Id{get;set;}
公共字符串名称{get;set;}
公共ICollection雇员{get;set;}
公共员工经理{get;set;}
}
公营雇员
{
公共Guid Id{get;set;}
公共字符串全名{get;set;}
[外键(“部门ID”)]
公共部门部门{get;set;}
公共Guid部门ID{get;set;}
公共字符串位置{get;set;}
}
我知道我可以将
部门.Employees
Employee.Id
关联(正如我已经做过的那样:)
Department.Employees
Department.Id
关联)

问题:
1) 这是一个还是两个协会


2) 我可以在
部门经理
员工.Id
之间创建第二个关联吗?不希望将经理存储在另一个表中,以便他们也存储在Employee表中,并且在
位置中有字段“Manager”。

定义如下关系

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Department>()
        .HasRequired(a => a.Manager)
        .WithMany()
        .HasForeignKey(a => a.EmployeeId);
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.HasRequired(a=>a.Manager)
.有很多
.HasForeignKey(a=>a.EmployeeId);
}
如果您希望延迟加载和更改跟踪,那么您也希望它们是虚拟的

public class Department
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Employee> Employees { get; set; }
    public virtual Employee Manager { get; set; }
}
公共课部
{
公共Guid Id{get;set;}
公共字符串名称{get;set;}
公共虚拟ICollection雇员{get;set;}
公共虚拟员工管理器{get;set;}
}

您可能希望经理继承员工的遗产?@Sam Leach,谢谢)不知道我怎么会错过这个),但我能将经理存储在员工表中吗?不,请参阅我的答案。只需将关系定义为一对一。