3

2 つのエンティティがあるNationalityEmployeeします。 と 1:n の関係があります。

public class Employee
{
    public int Id { get; set; }
    // More Properties

    public virtual Nationality Nationality { get; set; }
}

public class Nationality
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Entity Framework で Code-First を使用するには、もう 1 つのプロパティを追加する必要がEmployeesありNationalityます。

public class Nationality
{
    public int Id { get; set; }
    public string Name { get; set; }

    // How to avoid this property
    public virtual List<Employee> Employees { get; set; }
}

構成クラスで関係 1: n を構成できるように:

internal class EmployeeConfiguration : EntityTypeConfiguration<Employee>
{
    public EmployeeConfiguration()
    {
        HasKey(f => f.Id);

        HasRequired(e => e.Nationality)
          .WithMany(e => e.Employees)
          .Map(c => c.MapKey("NationalityId"));

        ToTable("Employees");
    }
}

循環依存を回避し、クラスEmployees外のプロパティを排除できる他のアプローチはありますか?Nationality

4

1 に答える 1

4

オーバーロードを使用WithMany()してマッピングを構成します。

internal class EmployeeConfiguration : EntityTypeConfiguration<Employee>
{
    public EmployeeConfiguration()
    {
        HasKey(f => f.Id);

        HasRequired(e => e.Nationality)
          .WithMany()
          .Map(c => c.MapKey("NationalityId"));

        ToTable("Employees");
    }
}
于 2013-01-17T07:07:54.960 に答える