32

私は2つのモデルを持っています:

public class Person
{
    public virtual int Id { get; set; }
    public virtual Employee Employee { get; set; } // optional
}

public class Employee
{
    public virtual int Id { get; set; }
    public virtual int PersonId { get; set; }

    public virtual Person Person {get; set; } // required
}

public class EmployeeConfiguration : EntityTypeConfiguration<Employee>
{
    public EmployeeConfiguration()
    {
        Property(e=>e.PersonId) // I need this property mapped
            .HasColumnName("person_id")
            .HasColumnType("int");
    }
}

流暢なマッピングを使用してそれらをマッピングしたい。従業員テーブルには、null 非許容の列「person_id」があります。私は次のことを試しました:

HasRequired(e => e.Person)
    .WithOptional(p => p.Employee)
    .Map(m => m.MapKey("person_id"));

しかし、それは失敗します:

System.Data.Entity.ModelConfiguration.ModelValidationException : モデルの生成中に 1 つ以上の検証エラーが検出されました:

person_id: 名前: タイプ内の各プロパティ名は一意である必要があります。プロパティ名 'person_id' は既に定義されています。

PersonId プロパティが必要なので、基本的には次のとおりです。

HasRequired(e => e.Person)
    .WithOptional(p => p.Employee)
    .HasForeignKey(e => e.PersonId); // there is no such method

しかし、ここには HasForeignKeyのようなメソッドはありません

4

2 に答える 2