gpt4 book ai didi

entity-framework - 在单一模型中结合代码优先和数据库优先?

转载 作者:行者123 更新时间:2023-12-04 07:23:53 26 4
gpt4 key购买 nike

有没有办法在同一上下文中结合代码优先和数据库优先?在编辑 EDMX 文件(保存需要 1.5 分钟)时,我们遇到了大量的开发时性能问题。我已将我们的非插入/更新/删除 UDF/存储过程移动到一些自动生成模型优先代码的自定义 T4 模板,但我似乎无法获得 OnModelCreating在涉及 EDMX 时调用。

我们考虑过的其他事情,但由于某种原因而不起作用:

  • 我们不能(合理地)将我们的代码分离到多个上下文中,因为我们的实体关系中有很多重叠。走这条路的人似乎也很后悔。
  • 我们尝试使用 2 个不同的上下文,但是实体和 UDF 之间有很多连接。这可能是我们最后的希望,但我真的很想避免它。
  • 我们无法切换到 Dapper,因为不幸的是我们大量使用了 IQueryable .
  • 我们尝试完全采用 Code-First,但我们在 EDMX 中使用的某些功能不受支持(主要与插入/更新/删除存储过程映射相关)。
  • 最佳答案

    看看下面的链接。我以类似的方式回答了另一个问题:
    How to use Repository pattern using Database first approach in entity framework

    正如我在那篇文章中提到的,我个人会尝试切换到 Code First 方法并摆脱 EDMX 文件,因为它已经被弃用,最重要的是,与 Code First 方法相比,维护工作相当可观且复杂得多。

    从模型优先方法切换到代码优先并不难。下面的一些步骤和图像:

  • 显示项目级别的所有文件并展开 EDMX 文件。您会注意到 EDMX 文件有一个 .TT 文件,该文件将嵌套多个文件、模型上下文和 POCO 类作为 .cs 或 .vb 类(取决于您使用的语言)。见下图:
    enter image description here
  • 卸载项目,右键单击,然后编辑。
  • 参见下图,注意上下文和 TT 文件之间的依赖关系
    enter image description here
  • 删除依赖项,xml 元素应如下图所示:
    enter image description here
  • 对模型类(具有模型定义的类)重复此过程
  • 重新加载您的项目,删除 EDMX 文件
  • 您可能需要做一些 tweeks 并更新名称/引用。

  • 过去我这样做过几次,它在生产中完美无缺。您还可以寻找为您执行此转换的工具。

    这也可能是您重新思考架构的好机会。

    顺便说一句:第 4 点不应该成为你的表演障碍。您可以通过 EF 映射/使用存储过程。看看下面的链接:
    How to call Stored Procedure in Entity Framework 6 (Code-First)?

    关于entity-framework - 在单一模型中结合代码优先和数据库优先?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40512961/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com