【问题标题】:How to mix Database first and Code first approach如何混合使用数据库优先和代码优先方法
【发布时间】:2020-01-17 16:19:45
【问题描述】:

我有一个使用 VS 2013 创建的新 MVC 网站(Internet 应用程序)

我来自数据库优先背景,并希望在这个项目中采用这种方法。

我看到的项目已经安装了Entity Framework,但我没有看到任何Entity Data Model 文件,很可能是因为该项目默认为Code First

我如何在这个项目中引入Database First 方法(表已经在数据库中创建)?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-4 entity-framework-6


    【解决方案1】:

    采用“Code First to an Existing Database”工作流程,这是一个真正的数据库优先工作流程。

    这将允许您添加映射到现有数据库的生成 DbContext,而无需引入 .EDMX 文件和旧的基于设计器的数据库优先工作流。

    如果您能提供帮助,不应将旧的基于 EDMX 的数据库优先工作流程用于新工作。 Code-First 对您隐藏的 OSpace/CSpace/SSpace 映射中有很多过时的设计和复杂性,而 EF Core 已完全消除。 EDMX 中的一些功能尚未在代码优先中复制,但其中大部分都有合理的解决方法。

    【讨论】:

    • 好的,我之前看过一篇类似的文章,它也使用实体数据模型向导,但使用数据库中的 EF 设计器而不是数据库中的 Code First。所以我会将 EF 升级到 v6,然后使用该选项。我可以继续使用脚手架选项来创建 CRUD 视图等吗?
    • 我不确定它是否会自动搭建视图。无论如何,您必须在 EF6 中手动分配视图上的键列。所以它至少部分是手动的。有时当大量使用视图时,创建一个带有主键和外键的空表的虚拟数据库并为其搭建支架会更容易。然后在运行时使用视图连接到真实数据库。
    • 太棒了!最后,这个新的 Context 可以驻留在 Models 文件夹之外吗?一旦我有这个工作,我最终会将它迁移到一个单独的类库中。谢谢
    • 新的 DbContext 只是一个代码文件。它可以在您想要的任何文件夹和任何命名空间中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多