我即将开始研究一个新项目,我想知道“仅限代码”是否是正确的方法。我们也在考虑设计师采用的另一种模型优先方法,但宁愿在EF设计师之外设计我的领域模型。
我们的域名可能包含100多个实体。我已经读过很多实体可以在某种程度上减慢EF(即:创建上下文并首先调用SaveChanges)。
由于没有EDMX文件来存储元数据,这种方法可能会慢一些吗?我在网上搜索过但未找到任何相关信息。
我知道这仍然只是在CTP中并且缺少许多功能,但我现在只是在寻找输入/指导。
答案 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)