【发布时间】:2017-06-03 17:58:09
【问题描述】:
我是 EF 和 .Net 的新手,我读过或搜索过的任何内容都没有为我所看到的内容做好准备 - 感谢任何帮助!
问题1:为什么我的 DbContext 只是在实例化时就充满了数据!?
(A#1:不是。只是调试器试图通过自动加载数据来提供帮助。)
原始问题 2:如何将其实例化为一个空的“repo/container”对象,以便通过我的显式查询加载数据?
更好的问题2:调试时要注意什么?
(A#2:忽略 DbContext 对象并查看 DbSet 和 Query 对象。)
询问原因:
- 在调试时,每个表中的每一行都填充到 dbcontext 的 Locals/ResultsView 中。
- 至少它返回的数据是正确的,但这将是一个真正的性能杀手:0
认为我已经排除了:
- LazyLoading 设置为 false
- 没有有意运行 Linq 查询
- 缓存问题
- 直接在 db 中删除数据会返回空的 Locals/ResultsView。 (所以只要我的数据库没有数据我就没事:p)
- 迁移/数据库不匹配
- 类型不匹配
没看过:
- Sql 分析器
- 任何深层内部结构,IL
在 .sln(VS2015 社区)中有几个项目使用 CQRS 模式(EF6、MVC5、SimpleInjector)
- .Web(MVC5、DI、部署启动)
- .Domain(POCO 类)
- .Data.Read(ReadDbContext、ReadDAO、EF 迁移、designtime-startup)
- 使用 LocalDB 实例
- .Data.Write (WriteDbContext, WriteDAO)
在 Data.Read 项目中,当设置为启动时,Main 类具有以下“播放代码”,断点为:
using ( MyDbContext dbcontext = new MyDbContext() )
{
//BREAKPOINT: Why is dbcontext full of data simply upon instantiation!?
//(while Debugging, Every row, from every table, is populated in Locals/ResultsView of dbcontext)
//No explicit Linq queries have been run
【问题讨论】:
标签: c# performance entity-framework-6 linq-to-entities dbcontext