ran*_*ons 8 entity-framework entity-framework-6
有没有办法在同一个上下文中结合代码优先和数据库优先?编辑EDMX文件时,我们遇到了大量的开发时性能问题(需要1.5分钟才能保存).我已经将我们的非插入/更新/删除UDF /存储过程移动到一些自动生成模型优先代码的自定义T4模板,但是OnModelCreating
当涉及EDMX时我似乎无法调用.
我们考虑过的其他事情,但不会因某种原因而起作用:
我们不能(合理地)将我们的代码分离到多个上下文,因为我们的实体关系存在很多重叠.这似乎也是一个走过这条路线的人后悔.
我们尝试了两种不同的上下文,但实体和UDF之间存在相当多的连接.这可能是我们最后的希望,但我真的想避免它.
我们不能切换到Dapper,因为我们不幸地大量使用了IQueryable
.
我们试图完全转向Code-First,但我们在EDMX中使用的功能不受支持(主要与插入/更新/删除存储过程映射有关).
感谢大家经过深思熟虑和彻底的回答。
许多其他答案都假设 EF Code-First 中的存储过程映射工作原理相同,但事实并非如此。我对此有点模糊,因为自从我查看它以来已经过去了大约 6 个月,但我相信从 EF 6.3 开始,代码优先存储过程要求您将实体中的每一列传递到插入/更新存储过程,并且您仅将关键列传递给您的删除过程。没有选项可以选择您可以传递哪些列。我们需要维护谁删除了记录,因此除了简单的密钥之外,我们还必须传递一些附加信息。
话虽如此,我最终所做的是使用 T4 模板从数据库自动生成 EDMX/Context/Model 文件(带有一些额外的元数据)。这将我们的开发时间体验从 1.5 分钟缩短到了大约 5 秒。
我希望 EF 存储过程映射能够得到改进,以实现对 EDMX 的模仿,然后我就可以通过代码生成代码优先映射并完全删除 EDMX 生成。
归档时间: |
|
查看次数: |
3286 次 |
最近记录: |