实体框架数据库首先.Net核心

问题描述 投票:4回答:2

我有一个.Net Standard 2.0类库项目,我想为它添加实体框架。我已将Entity Framework Core包添加到项目中,但当我尝试向项目添加新项时,不会显示实体框架模板。我在网上看了一下,我似乎找到的就是Code First的说明!

如何恢复数据库的第一个功能?

c# entity-framework asp.net-core-2.0 .net-standard-2.0
2个回答
8
投票

EF Core不会,也绝不会支持设计人员使用基于EDMX的Database First工作流程。 EF Core将所有对象到数据库映射存储在源代码中的Attributes和Fluent API映射中。

在EF 6中,“Code First”一词意味着两个截然不同的东西。一个是代码优先建模工作流,其中数据库是从.NET类生成的。 “Code First”的另一个含义就是映射元数据嵌入在源代码(Attributes / Fluent API)中,而不是嵌入在EDMX文件中。 EF 6支持两种不同的数据库优先工作流程。数据库优先使用EDMX,工作流正式称为“现有数据库中的代码优先”,但可以将其称为“基于代码的映射的数据库优先”。

在EF Core中,您的代码将始终具有映射,因此在这种意义上它是“代码优先”。但是,您仍然可以执行数据库优先设计工作流,并编写与现有数据库匹配的实体和映射代码。

您可以在程序包管理器控制台中使用scaffold-dbcontext,或在CLI命令中使用dotnet ef dbcontext scaffold从现有数据库生成实体类和映射元数据。见Getting Started with EF Core on ASP.NET Core with an Existing Database


1
投票

在“.net core”中,您无法从菜单中使用EF并“添加新项目”按钮。

确保安装了“Microsoft.VisualStudio.Web.CodeGeneration.Design”包:

  1. 转到Tools –> NuGet Package Manager –> Package Manager Console
  2. 运行Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design

然后按照下列步骤操作

  1. 通过示例代码创建连接字符串。 (SQLSERVER,DATABASE,USERNAME,PASS) Data Source=SQLSERVER;Initial Catalog=DATABASE;persist security info=True;user id=USERNAME;password=PASS
  2. 编辑示例代码并将上面的代码放在引号中。 (CONNECTION STRING,FOLDERNAME) qazxsw poi
  3. 例如,这是步骤1和2的结果。 Scaffold-DbContext "CONECTIONSTRING" Microsoft.EntityFrameworkCore.SqlServer -OutputDir FOLDERNAME
  4. 通过Scaffold-DbContext "Data Source=localhost;Initial Catalog=myDb;persist security info=True;user id=sa;password=0000" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models/EF运行上面的代码

关于Tools –> NuGet Package Manager –> Package Manager Console的更多细节

© www.soinside.com 2019 - 2024. All rights reserved.