0

と の 2 つのエンティティがあるDeputyとしDeputyProfileます。

public class Deputy : IdableEntity
{
    [Required]
    public string FirstName { get; set; }

    public string Patronimic { get; set; }

    [Required]
    public string LastName { get; set; }
}

public class DeputyProfile : IdableEntity
{
    [Required]
    public string Dosieur { get; set; }
}

DeputyProfile から Deputy (子から親) または Visa-verse にナビゲーション プロパティを配置することによって、それらの間に 1 対 1 の関係を確立する最良の方法はありますか?

このようにする必要がありますか?:

public class DeputyProfile : IdableEntity
{
    [Required]
    public virtual Deputy Deputy{ get; set; }

    [Required]
    public string Dosieur { get; set; }
}

その決定を下すのに最適な論理規則は何ですか?

PS の子になるとIdableEntity、クラスに独自の Guid Id フィールドが与えられます。

4

1 に答える 1

0

リレーションのプリンシパル (親) 側と従属 (子) 側を選択する必要があります。どちらを選ぶかは自由です。モデルが成長するにつれて、より多くの関係を持つ可能性が高いため、私には Deputy が明確な Principal のように見えます。

1 対 1 の関係は、共有主キーによって実装されます。DeputyProfile は、代理 ID を主キーとして持つ必要があります。これにより、コードは次のようになります。

public class Deputy
{

   public int ID {get;set;}

   public int ProfileID {get;set;}
   public virtual DeputyProfile Profile {get;set;}

    [Required]
    public string FirstName { get; set; }

    public string Patronimic { get; set; }

    [Required]
    public string LastName { get; set; }
}

public class DeputyProfile
{
    public int DeputyID {get;set}
    public virtual Deputy Deputy {get;set}

    [Required]
    public string Dosieur { get; set; }
}

注: 現在実装されているため、すべての Deputy にはプロファイルが必要です。プロファイルがオプションの場合は、ProfileID を「int?」にします。

Entity Framework 4.1 以降でのリレーションの実装に関するこの優れた一連のブログを心からお勧めします。

于 2012-08-03T22:11:21.840 に答える