5

私はEntityFramework 4.1を使用しています。Entity Frameworkと複数の1対多の関係

は、私は次のモデルしている:私は私のデータベースを生成しようとすると、私はこのエラー

public class User 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Username { get; set; } 
    public string Password { get; set; } 

    public virtual User Creator { get; set; } 
    public virtual User LastEditor { get; set; } 
} 

ました:

Unable to determine the principal end of an association between the types 'User' and 'User'. The principal end of this association must be explicitly configured using either the relationship fluent API or data annotations.

をしかし、私はまた、このクラスを持っている:

public class Course 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Name { get; set; } 

    public virtual User Creator { get; set; } 
    public virtual User LastEditor { get; set; } 
} 

そして、それは大丈夫です、私はこれらの外部キーが生成されている:

Creator_Id 
LastEditor_Id 

ユーザーモデルに追加するものは何もありますか?

+0

はこの質問を見て、それが正しい方向にあなたをリードしている場合参照してください:http://stackoverflow.com Userのプロパティのために同じことを達成するために、あなたは流暢APIとの関係を設定する必要があります/ questions/6531671/what-does-principal-end-of-an-association-in-11-relationship-in-entity-fr – Cyric297

答えて

7

EFはしようとします - 慣例で - 彼らは両方の彼らはで自分自身を配置されてUserクラスを参照するためUser.CreatorUser.LastEditor間の1対1の関係を作成することがCourseクラスのケースではありません。 Course.CreatorCourse.LastEditorの場合、EFはUserと2対1対多の関係を作成します。

modelBuilder.Entity<User>() 
    .HasOptional(u => u.Creator)  // or HasRequired 
    .WithMany(); 

modelBuilder.Entity<User>() 
    .HasOptional(u => u.LastEditor) // or HasRequired 
    .WithMany(); 
+0

ありがとう!できます!そして素晴らしい説明。 –

関連する問題