使用映射从 edmx 生成 dbcontext 对象

Posted

技术标签:

【中文标题】使用映射从 edmx 生成 dbcontext 对象【英文标题】:generate dbcontext objects from edmx with mappings 【发布时间】:2018-06-18 11:51:52 【问题描述】:

在我们公司,我们有很多使用 edmx 文件和 EF4 的遗留应用程序。 我们想迁移到 EF6(或 EF 核心)。有没有一种方法可以让我们从这个 edmx 使用映射生成代码优先对象(dbcontext、实体)。

我们怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

也许最好的解决方案是从当前数据库中使用脚手架(对模型进行逆向工程)。

EF Core 为这个脚手架提供了不错的 powershell 工具 https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db 您还可以使用指定的 Table 参数将整个(可能很大)DbContext 拆分为更多 DbContext https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell

EF 6 也有一些脚手架实际数据库的选项Entity Framework - Generating Classes

【讨论】:

问题是edmx是强映射的。我们不想从 oracle 数据库重新启动。我们想要最少的代码中断。例如,数据库中的名称不同。 也许这个答案可以帮助您***.com/a/14882632/2866538 先将您的 edmx 转换为 EF 5.x 代码,然后再迁移到 EF 6【参考方案2】:

您为什么要费心从 .edmx 生成任何东西?如果您首先使用现有数据库中的代码创建新项目怎么办?

【讨论】:

因为我们希望以最少的工作量迁移遗留应用程序。 edmx 已经在那里了...

以上是关于使用映射从 edmx 生成 dbcontext 对象的主要内容,如果未能解决你的问题,请参考以下文章

将实体框架从数据库优先转换为代码优先

是否可以从实体数据模型(edmx)文件生成数据库?

从数据库生成时,AspNetUserRoles 不在 EDMX 中

首先是EF6代码:如何在启动时从EDMX文件加载DbCompiledModel?

自动从数据库生成实体模型到当前的DbContext类

DB_EF_1