EF Core不支持基于EDMX的设计器实现的“数据库优先”流程,且永远不会支持。在EF Core中,所有对象到数据库映射都存储在源代码中的属性和Fluent API映射中。
在EF 6中,“Code First”一词有两个非常不同的含义。一个是从.NET类生成数据库的代码优先建模工作流。另一个含义是将映射元数据嵌入源代码(属性/Fluent API)而不是EDMX文件。EF 6支持两种不同的“数据库优先”工作流。使用EDMX进行数据库优先和官方称为“Code First From an Existing Database”的工作流,但可能被称为“使用基于代码的映射的数据库优先”。
在EF Core中,您的代码始终具有映射,因此从这个意义上说,它是“代码优先”的。但是,您仍然可以使用“数据库优先”设计工作流程,并编写与现有数据库匹配的实体和映射代码。
您可以使用Package Manager Console中的scaffold-dbcontext
或CLI命令中的dotnet ef dbcontext scaffold
从现有数据库生成实体类和映射元数据。请参见使用现有数据库在ASP.NET Core上开始使用EF Core
按照示例代码创建连接字符串。 (SQLSERVER,DATABASE,USERNAME,PASS)
Data Source=SQLSERVER;Initial Catalog=DATABASE;persist security info=True;user id=USERNAME;password=PASS
编辑示例代码并将上述代码放入引号中。 (CONECTIONSTRING,FOLDERNAME)
Scaffold-DbContext "CONECTIONSTRING" Microsoft.EntityFrameworkCore.SqlServer -OutputDir FOLDERNAME
例如,这是步骤1和2的结果。
Scaffold-DbContext "Data Source=localhost;Initial Catalog=myDb;persist security info=True;user id=sa;password=0000" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models/EF
通过 工具 –> NuGet程序包管理器 –> 包管理器控制台
运行上述代码。
关于 如何使用现有数据库在 ASP.NET Core 上开始使用 EF Core 的更多详细信息。
dotnet-ef dbcontext scaffold "Host=localhost;Username=my_user_name;Password=my_pswd;Database=my_db" Npgsql.EntityFrameworkCore.PostgreSQL