簡體   English   中英

延遲加載不起作用,相關實體始終為空

[英]Lazy Loading not working, related entity is always null

我對EF有問題。 相關實體始終為空。 到目前為止我沒有得到任何解決方案。

以下是模型:

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

因此,每個分類都有更多的子類別。 在Seed方法中我填充了數據庫,所以我有數據:

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();

看起來似乎evrything是好的,相關實體總是為null,即使使用Include(),也是null。

我試過這種方式:

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

但entity.SubCategories始終為null。

with Include也是相關實體為null

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

在此輸入圖像描述

在我的項目中,我有更多相關的實體,延遲加載工作。

只有這些模型(類別和子類別)我才有問題。 我做錯了什么?

你的問題是你的SubCategories model.You要解決這個問題,如下圖所示。

注意:使用public virtual Categories Categories { get; set; } public virtual Categories Categories { get; set; } public virtual Categories Categories { get; set; }上it.Hence你沒有這樣做,EF不知道如何從數據庫中,當您使用獲取相關實體(或導航屬性) Include或懶惰loading.And還需要更改CategoryIDCategoriesID .B '因為你的模特的名字是Categories

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

嘗試這個:

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

您缺少SubCategories類中的導航屬性:

public virtual Categories Categories { get; set; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM