EF Core 3.1 是否支持 DB First 方法?

Afs*_*bbi 6 asp.net-mvc porting entity-framework entity-framework-core asp.net-core

我们正在将ASP.NET MVC 4.x应用程序移植到ASP.NET Core 3.1. 当前的应用程序使用EF 6.xDB first 方法。作为此迁移的一部分,我们将使用EF Core 3.1作为当前EF 6.x. 所以问题是:

EF Core 3.1 是否支持 DB First 方法?

如果没有,有哪些选择?我们是否只剩下代码优先的方法?

感谢您的帮助。

Ash*_*uru 13

是的。从 .NET Core 1.0 到现在,它都支持 DB First Approach。你需要从nugets下载4

  1. 实体框架核心

  2. EntityFrameworkCore.Design

  3. EntityFrameworkCore.Tools

  4. EntityFrameworkCore.SqlServer

打开工具 > NuGet 包管理器 > 包管理器控制台。并在控制台中输入以下内容。

默认:

Scaffold-DbContext "Server=yourserveraddress;Database=yourdatabase;user id=youruser;password=yourpassword;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Context "YourOwnContext"
Run Code Online (Sandbox Code Playgroud)

看到您对“Scaffold-DbContext 仅创建代码优先模型”的评论。不,Scaffold-DbContext 是数据库优先的方法。

“为现有数据库创建实体和上下文类称为数据库优先方法。”

已编辑

如果您在数据库中有新的更新并想要更新 dbcontext,只需在末尾添加 -f。它将更新并覆盖您所有的 dbcontext 和模型类。

Scaffold-DbContext "Server=yourserveraddress;Database=yourdatabase;user id=youruser;password=yourpassword;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Context "YourOwnContext" -f
Run Code Online (Sandbox Code Playgroud)

如果要在模型类中添加一些数据注解如[Column]等,可以添加-DataAnnotations

Scaffold-DbContext "Server=yourserveraddress;Database=yourdatabase;user id=youruser;password=yourpassword;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Context "YourOwnContext" -DataAnnotations -f
Run Code Online (Sandbox Code Playgroud)


Eri*_*kEJ 5

是的,EF Core 通过Scaffold-DbContext命令支持数据库优先,您也可以使用 EF Core Power Tools。基于 Edmx 的建模不适用于 EF Core,仅适用于基于代码的建模。