0

私はこのようになりますモデルがあります:コード最初のマッピング

Categories 
    Id (PK varchar(5)) 
    Description (nvarchar(50)) 
    ParentId (FK varchar(5)) 

のように見えます。しかし、それはセットアップに来るときImは困惑し、データベーステーブルで

public class Category 
{ 
    public string Id { get; set; } 
    public string Description { get; set; } 
    public Category Parent { get; set; } 
    public ICollection<Category> Children { get; set; } 
    public ICollection<Product> Products { get; set; } 
} 

をマッピング

modelBuilder.Entity<Category>() 
    .HasMany(x => x.Children) 
    .WithMany(x => x.Children) 
    .Map(m => 
     { 
      m.ToTable("Categories"); 
      m.MapLeftKey(x => x.Id, "Id"); 
      m.MapRightKey(x => x.Id, "ParentId"); 
     }); 

マッピングが失敗する理由(StackOverflowException)はわかりますが、修正方法は不明ですそれ。どんな助けでも大変に感謝しています。

これは、EF(4.1?)の最新リリースを使用しています。

ありがとうございます!

答えて

3

同じナビゲーションプロパティで多対多の関係をマップするのはなぜですか?それは完全に間違っています。最初に、あなたのテーブルは明らかに1対多の関係を期待しています。多対多リレーションが必要な場合でも、同じナビゲーションプロパティを使用することはできません。

ちょうど試してみてください。

modelBuilder.Entity<Category>() 
      .HasMany(x => x.Children) 
      .WithOptional(y => y.Parent) 
      .Map(m => m.MapKey("ParentId")); 
+0

恐ろしいです。ありがとう。また、これらのプロパティを仮想化することを覚えておく必要があります。 – Joe

関連する問題