2016-08-03 7 views
0

を動作しないようEF多対多のクラスがすでに参照されたとき。以下のコードで移行を生成すると、many-to-manyは作成されません。しかし、Penguinクラスの3つの "OwnerId"行をコメントアウトすると、many-to-manyが機能します。何がありますか?彼らは独立しているべきです。FKは私が<code>Person_Id</code>と<code>Penguin_Id</code>を保持している通常の<code>PenguinPeople</code>表の形で<code>People</code>と<code>Penguins</code>間のEntity Frameworkの<code>many-to-many</code>関係を作成しようとしています

public class Penguin 
{ 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public long Id { get; set; } 

    public long OwnerId{ get; set; } //works if I comment this out 
    [ForeignKey("OwnerId")] //works if I comment this out 
    public Person Person{ get; set; } //works if I comment this out 

    public virtual ICollection<Person> PenguinTrainers{ get; set; } 
} 

public class Person 
{ 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public long Id { get; set; } 

    public virtual ICollection<Person> People{ get; set; } 
} 
+0

:もののために、明らかに私のペンギン/人モデルがちょうど作らアップされた置換は、実際に問題を引き起こしているので例は、単にドキュメントからでしょうか? – chandler

答えて

0

あなたは両方のクラスであなたのPersonクラスとだけIDプロパティの

ICollection<Penguin> AssignedPenguins { get; set; } 

を持っている場合、それは連想テーブルを作成する必要があります。

0

これは簡単な方法があるかどうかわかりませんが、EF docsに記載されているFluentAPIを使用することを余儀なくされました。あなたはPersonクラスでいるICollection プロパティを望んでいない

modelBuilder.Entity<Post>() 
       .HasMany(p => p.Tags) 
       .WithMany(t => t.Posts) 
       .Map(mc => 
        { 
         mc.ToTable("PostTags"); 
         mc.MapLeftKey("Post_Id"); 
         mc.MapRightKey("Tag_Id"); 
        }); 
関連する問題

 関連する問題