c# - Entity Framework V4 : "Code Only" performance considerations

标签 c# .net entity-framework

我即将开始一个新项目,想知道“仅代码”是否是正确的方法。我们还在考虑通过设计器采用其他模型优先方法,但宁愿在 EF 设计器之外设计我的领域模型。

我们的域可能包含 100 多个实体。我读到过大量实体会在某种程度上减慢 EF(即:创建上下文并首次调用 SaveChanges)。

由于没有 EDMX 文件来存储元数据,这种方法是否可能更慢?我在网上搜索过,但没能找到这方面的任何信息。

我知道这仍然只在 CTP 中并且缺少很多功能,但此时我只是在寻找输入/指导。

最佳答案

Code-Only 在内部缓存元数据,因此,一旦创建了第一个上下文,您应该会发现 Code-Only 和 EDMX 方法之间的性能差异很小。

您说得对,大量实体会降低 EF 的速度。

通常建议使用预生成 View 来帮助提高大型模型的性能。但该功能依赖于 EDMX 文件,因此它不适用于 Code-Only 也就不足为奇了。

但是,如果您发现需要预编译 View ,您始终可以使用 CodeOnly 的 ToEdmx() 功能从 CodeOnly 世界转移到标准 EDMX 世界。当然,一旦进入 EDMX 世界,您就可以预编译您的观点。

然而,这不一定是我会采用的方法。

无论如何,从可用性的角度来看,我认为具有 100 个或更多 IQueryable 属性的上下文并不理想。

因此,与其从 Code-Only 转移到 pre-gen View ,我可能会利用 Code-Only 的能力来轻松创建更小的目标子域,以最大限度地减少模型的有效大小您正在开发的应用。

结果将是一些快速、易于使用的 ObjectContext,针对当前的任务集。

恕我直言,哪个更可取。

希望对你有帮助

亚历克斯

关于c# - Entity Framework V4 : "Code Only" performance considerations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1481754/

相关文章:

c# - Array.Count() 比 List.Count() 慢得多

.net - Mono真的跨平台吗?

c# - 从大型 JSON 中删除属性,c#

c# - 来自 Entity Framework 的提供程序连接字符串

.net - 实体数据模型向导中没有Oracle DataSource

c# - HttpWebRequest 超时

c# - ReadAsync 从缓冲区获取数据

c# - System.Data.SQLite 有多稳定

c# - .NET Framework 的字符串比较中的错误

entity-framework - 带投影的 EF4 Include()