Entity framework 在实体框架延迟加载模式下,父类别始终为空
它加载类别,但始终使用空父级。我想获取具有给定ID的层次结构类别Entity framework 在实体框架延迟加载模式下,父类别始终为空,entity-framework,lazy-loading,Entity Framework,Lazy Loading,它加载类别,但始终使用空父级。我想获取具有给定ID的层次结构类别 public static Category GetCategory(System.Guid ID, ActionLinkInfo AInfo) { Category category = null; using (TIKSN.STOZE.Data.StozeContext DContext = new Data.StozeContext())
public static Category GetCategory(System.Guid ID, ActionLinkInfo AInfo)
{
Category category = null;
using (TIKSN.STOZE.Data.StozeContext DContext = new Data.StozeContext())
{
var cats = from cat in DContext.Categories where cat.ID == ID select cat;
foreach (Data.Category Cat in cats)
{
category = new Category(Cat, Cat.Parent == null ? null : GetCategory(Cat.Parent.ID, AInfo), AInfo);
}
}
return category;
}
试试这个:
var cats = from cat in DContext.Categories.Include("Parent") where cat.ID == ID select cat;
或者,您可以更改模型,将该ParentID
作为整数包含在类别中
类:
public class Category {
/* (...) */
public int ParentID { get; set; }
[ForeignKey("ParentID")]
public Category Parent { get; set; }
}
这样,您就可以获得Cat.ParentID
,而无需从数据库中加载整个父对象。尝试以下操作:
var cats = from cat in DContext.Categories.Include("Parent") where cat.ID == ID select cat;
或者,您可以更改模型,将该ParentID
作为整数包含在类别中
类:
public class Category {
/* (...) */
public int ParentID { get; set; }
[ForeignKey("ParentID")]
public Category Parent { get; set; }
}
有了它,您就可以获得Cat.ParentID
,而无需从数据库加载整个Parent
对象。解决方案是显式请求加载父对象
public static Data.Entity.Category GetCategory(long ID)
{
Data.Entity.Category category;
using (Data.StozeContext DContext = new Data.StozeContext())
{
var categories = from SingleCategory in DContext.Categories.Include("Parent") where SingleCategory.ID == ID select SingleCategory;
category = categories.Single();
}
return category;
}
解决方案是显式请求加载父级
public static Data.Entity.Category GetCategory(long ID)
{
Data.Entity.Category category;
using (Data.StozeContext DContext = new Data.StozeContext())
{
var categories = from SingleCategory in DContext.Categories.Include("Parent") where SingleCategory.ID == ID select SingleCategory;
category = categories.Single();
}
return category;
}
但这不是惰性负载。这是一个渴望的负载,但不是懒惰的负载。这是急件。