5

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

データベースを生成しようとすると、次のエラーが発生しました。

タイプ'User'と'User'の間の関連付けの主な終わりを判別できません。この関連付けの主な目的は、リレーションシップフルーエントAPIまたはデータアノテーションのいずれかを使用して明示的に構成する必要があります。

しかし、私はこのクラスも持っています:

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

ユーザーモデルを機能させるために追加するものはありますか?

4

1 に答える 1

7

User.CreatorEFは、慣例により、との間で1対1の関係を作成しようとします。これは、両方が、それら自体が存在するクラスUser.LastEditorを参照しているためです。これは、クラスには当てはまりません。ForとEFは、に対して2つの1対多の関係を作成します。のプロパティで同じことを実現するには、FluentAPIとの関係を構成する必要があります。UserCourseCourse.CreatorCourse.LastEditorUserUser

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

modelBuilder.Entity<User>()
    .HasOptional(u => u.LastEditor)  // or HasRequired
    .WithMany();
于 2012-06-14T16:08:41.420 に答える