实体框架V4:“仅代码”性能注意事项

时间:2009-09-26 17:56:16

标签: c# .net entity-framework

我即将开始研究一个新项目,我想知道“仅限代码”是否是正确的方法。我们也在考虑设计师采用的另一种模型优先方法,但宁愿在EF设计师之外设计我的领域模型。

我们的域名可能包含100多个实体。我已经读过很多实体可以在某种程度上减慢EF(即:创建上下文并首先调用SaveChanges)。

由于没有EDMX文件来存储元数据,这种方法可能会慢一些吗?我在网上搜索过但未找到任何相关信息。

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

3 个答案:

答案 0 :(得分:4)

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

你是对的,大量实体可以减慢EF。

通常建议使用预生成视图来帮助大型模型的性能。但是这个功能依赖于拥有EDMX文件,所以毫不奇怪它不适用于Code-Only。

但是,如果您发现需要预编译视图,则可以始终使用CodeOnly的ToEdmx()功能从CodeOnly世界转移到标准EDMX世界。当然,在EDMX世界中,您可以预先编译您的视图。

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

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

因此,我不是将Code-Only转移到pre-gen视图,而是利用Code-Only的能力轻松创建更小的目标子域,以最小化模型的有效大小。你正在努力的应用程序。

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

哪个恕我直言更受欢迎。

希望这有帮助

亚历

答案 1 :(得分:1)

作为.NET 4,包括EF4在内的Beta 1目前你不会得到任何有用的一般答案。对于您的具体情况,为什么不测试。

使用一个实体创建实体模型并运行一些性能测试。然后展开模型以获得更多实体并重新运行测试。如果模型中的实体数量存在性能影响,您应该会看到性能差异。

请记住折扣加载效果,除非您只对启动,执行单个操作然后关闭的应用程序感兴趣。

答案 2 :(得分:0)