我有POCO实体类型:
public class Blog
{
public int BlogId { get; set; }
public string Name { get; set; }
public string Url { get; set; }
public string Tags { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
如何在Visual Studio调试器中检查此查询仅获取Blogs:
var result1 = context.Blog.ToList();
此查询将博客与帖子一起作为查询的一部分:
var result2 = context.Blog.Include(x => x.Posts).ToList();
有可能吗?
答案 0 :(得分:0)
在上下文中查找有关延迟加载的属性(context.Configuration.LazyLoadingEnabled)并禁用它, 在result1.Posts上添加一个监视,并且不应该加载任何内容。
相反的结果2.经过检查,邮件应该有项目。 当然,这依赖于连接数据库中的条目!
另一个告诉故事标志是Posts上的代理对象,如果启用了延迟加载,它将具有一个奇怪的名称。
答案 1 :(得分:0)
我建议调试器不适合监视这样的东西。相反,我会使用SQL Server Profiler或像EFProf这样的专业工具。
答案 2 :(得分:0)
当然困境在于,只要你发表博客,你就会得到物品,但是那时候你不能再告诉它们何时/如何装载。 (如果您没有监控SQL)。
如果您查看本地收藏集,您可以100%确定:
var result1 = context.Blog.ToList();
var postsLoaded = context.Posts.Local.Any(); // false.
var result2 = context.Blog.Include(x => x.Posts).ToList();
var postsLoaded = context.Posts.Local.Any(); // true.
// (if Blogs having Posts were loaded)