我有一个父母'链接到其他实体的实体,在加载列表时,由于所有连接而超时,因此我禁用了LazyLoading。
它一直运行良好,但现在我需要从子实体中检索字段。因此,我使用.Include()将实体包含在查询中,并且加载时间太长。
这些是实体。编码就像是从其他类创建的树关系的摘要。
public partial class Coded
{
public int CodeId { get; set; }
public int Maters_MaterId { get; set; }
public int Levels_LevelId { get; set; }
public virtual Mater mater { get; set; }
public virtual Level level { get; set; }
public virtual Sublevel sublevel { get; set; }
...
}
public partial class Mater
{
public int MaterId { get; set; }
public string name { get; set; }
}
public partial class Level
{
public int LevelId { get; set; }
public string name { get; set; }
public virtual Mater mater { get; set; }
}
当我执行以下查询时,LazyLoading已禁用,它可以正常工作并且运行速度很快。
MyGrid mg = new MyGrid();
mg.codes = db.codes.Where(c => c.Maters_MaterId == 1 && c.Levels_LevelId == 1)
.ToList();
这个也是:
MyGrid mg = new MyGrid();
mg.codes = db.codes.Where(c => c.Maters_MaterId == 1 && c.Levels_LevelId == 1)
.Include(c => c.mater)
.ToList();
但是当我执行此查询时,也禁用了LazyLoading,它会逐步执行,但是当它加载页面(视图)时,它会超时。
MyGrid mg = new MyGrid();
mg.codes = db.codes.Where(c => c.Maters_MaterId == 1 && c.Levels_LevelId == 1)
.Include(c => c.level)
.ToList();
在Json脚本中,我也有这个,这有助于清除我之前遇到的一些错误。如果它有事可做,我会添加它。:
var initialData = @Html.Raw(JsonConvert.SerializeObject(Model, new JsonSerializerSettings{ ReferenceLoopHandling = ReferenceLoopHandling.Ignore} ))
这是虚拟加载的方式吗?我可以加载我需要的字段吗?我在视图中使用Json,它是如何读取的?
答案 0 :(得分:0)
听起来您需要在视图中使用mater
,因为当您包含该部分时它会起作用。
尝试同时包含
MyGrid mg = new MyGrid();
mg.codes = db.codes
.Include(c => c.mater)
.Include(c => c.level)
.Where(c => c.Maters_MaterId == 1 && c.Levels_LevelId == 1)
.ToList();