【发布时间】:2016-01-21 16:12:40
【问题描述】:
我接手了一个使用 Entity Framework 的项目。代码似乎分层良好,结构良好。问题是,正如我在 Entity Framework 中多次看到的那样,他们经常使用延迟加载。直到 db 得到一些数据并且 sql 查询刚刚达到峰值,问题才会出现。
该解决方案充分利用了将存储库保持小规模并仅获取一个级别的数据,并且当我处理一些最大的性能问题时,最常见的问题通常通过向存储库添加特定功能来加载嵌套实体并使用一些动态查询。
即GetCustomerWithOrderData,包括订单、订单行等。
有时我必须通过首先获取客户(包含关系)然后获取订单(包含)并通过 linq 将它们映射在一起来合并两个查询。
查询比示例复杂得多,延迟加载可能在业务层、控制器或视图中,因此需要跟踪解决很多问题。
但是我感觉代码挺大的,很难发现以后的问题。我现在需要的是一种跟踪延迟加载时间的好方法,并且还能够判断在特定调用中需要加载哪些对象。
如果我可以跟踪特定的操作调用,并获取执行的 sql、执行次数、加载时间等,那最好。
该解决方案是使用 MVC 3 和 EF4 构建的,升级到更新的 EF 是否可以获得任何性能?
【问题讨论】:
-
你看过this很棒的文章吗?所以简而言之,从 ef 4 到 6 有 大 性能改进。
标签: c# entity-framework lazy-loading