0

たとえば、次の 2 つのエンティティがあります。

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

私は、(私が既に行ったように:)Department.EmployeesEmployee.Id(および逆:Employee.DepartmentDepartment.Id) を関連付けることができることを知っています。

質問:
1) これは 1 つまたは 2 つの協会ですか?

2) と の間に 2 番目の関連付けを作成できますDepartment.ManagerEmployee.Id? マネージャーを別のテーブルに保存したくないので、従業員テーブルにも保存され、Positionフィールド「マネージャー」にあります。

4

1 に答える 1

1

関係を次のように定義します。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Department>()
        .HasRequired(a => a.Manager)
        .WithMany()
        .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; }
}
于 2013-05-09T14:35:21.527 に答える