2016-11-15 1 views
4

I EFに問題があります。 実体は常にnullです。私はこれまでに何の解決策も得ていませんでした。ここでレイジーロードが機能していません。関連するエンティティは常にnullです。

はモデルです:だから

public class Categories 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public int AtpID { get; set; } 

    public virtual ICollection<SubCategories> SubCategories { get; set; } 
} 

public class SubCategories 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public int CategoryID { get; set; } 
    public string LinkToProducts { get; set; } 
    } 

、すべてのCategorieは、より多くのサブカテゴリがあります。私は、データベースを埋めシード方法で ので、私が持っているデータ:それAltought

var categories = new List<Categories> 
     { 
     new Categories{Name="Abgasanlage", ID=1}, 
     new Categories{Name="Elektrik",ID=2}, 
     new Categories{Name="Filter", ID=3}, 
     new Categories{Name="Karosserie", ID=4}, 
     new Categories{Name="Kuhlunkg",ID=5} 
     }; 

     categories.ForEach(s => context.Categories.Add(s)); 
     context.SaveChanges(); 

     var subCategories = new List<SubCategories> 
     { 
     new SubCategories{Name="Montageteile", ID=1, CategoryID=1}, 
     new SubCategories{Name="Lamdasonde",ID=2, CategoryID=1}, 
     new SubCategories{Name="Anlasser", ID=3, CategoryID=2}, 
     new SubCategories{Name="Luftfilter", ID=4, CategoryID = 3}, 
     new SubCategories{Name="Ohlfilter", ID=5, CategoryID = 3}, 
     new SubCategories{Name="Sonstige", ID=6, CategoryID = 4}, 
     new SubCategories{Name="Wasserpumpe", ID=7, CategoryID = 5} 
     }; 

     subCategories.ForEach(s => context.SubCategories.Add(s)); 
     context.SaveChanges(); 

は、関連するエンティティも含める()、nullであると、常にnullで、そのevrythingがOKであると思われます。

私はこの方法を試してみました:

Models.Categories entity = db.Categories.Where(m => m.ID == 3) 
            .Include(m => m.SubCategories) 
            .FirstOrDefault(); 

しかしentity.SubCategoriesは常にnullです。

との関連エンティティが、私は遅延読み込みが作動している複数の関連エンティティを、持っている私のプロジェクトで

var setting = (from s in db.Categories.Include("SubCategories") 
          where s.ID == 3 
          select s).FirstOrDefault(); 

nullでも含めます。

これらのモデル(カテゴリとサブカテゴリ)でのみ問題が発生します。 私は間違っていますか?

答えて

2

は、以下に示すように、その問題を解決しなければなりません。

注:あなたがそれをしなかったit.Hence上使用public virtual Categories Categories { get; set; }、EFはあなたにもIncludeを使用するか、レイジーloading.And時にDBから関連するエンティティ(またはナビゲーションプロパティ)をフェッチする方法を知りません。 CategoryIDCategoriesIDに変更する必要があります。モデル名はCategoriesです。あなたはSubCategoriesクラスのナビゲーションプロパティが欠落している

public class SubCategories 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 

    [ForeignKey("CategoriesID")] 
    public virtual Categories Categories{ get; set; }//you have to do this 
    public int CategoriesID { get; set; } 

    public string LinkToProducts { get; set; } 
    } 
+0

Oh..yes.I私の答えも更新しました:) – Sampath

0

この試してみてください:あなたの問題は、あなたのSubCategories model.Youにある

public class SubCategories 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    [ForeignKey("CategoryID")] 
    public Categories Category { get; set; } 
    public int CategoryID { get; set; } 
    public string LinkToProducts { get; set; } 
} 
0

public virtual Categories Categories { get; set; } 
0

私が区分からCategoriesIDに、サブカテゴリのモデルで外部キーを変更することで、私の問題を解決しているようです。 :)あなたの答えをありがとう!

関連する問題