从文档中:
实体框架核心将自动将导航属性修复为先前已加载到上下文实例中的任何其他实体。因此,即使您没有显式包含导航属性的数据,但如果先前已加载某些或所有相关实体,也可能仍会填充该属性。
实体设置:
public class Page{
public Page () {
Event = new HashSet<Event>();
}
[Key]
public int Id { get; set; }
public string Title { get; set; }
public string Content { get; set; } // don't want to retrieve, too large
public ICollection<Event> Event { get; set; }
}
public class Event{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Type { get; set; }
public Page Page { get; set; }
}
上下文是通过一对多关系设置的。
这些是我运行的查询,一个接一个:
var pages = _dbContext.Page.Select(page => new Page
{
Id = page.Id,
Title = page.Title
}).ToList();
var events = _dbContent.Event.ToList();
我希望每一个Page有Events收集填充(反之亦然为Event与Page基准),但修复过程不会发生(Page在Event是null,并且Event在Page为null)。
如果我以此替换第一个查询,则修复工作:
var pages = _dbContext.Page.ToList();
因此,似乎没有进行修复的可能性。我之所以将其分为2个查询,是为了避免使用类似的方法Include,因为它们会产生巨大的联接并复制大量数据。
有什么办法解决吗?我需要自己手动进行修复吗?
牛魔王的故事
相关分类