如何在 .NET Core 6 中使用数据库优先方法?

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

我尝试在 .NET Core 6 项目中运行的最小 API 中使用 Entity Framework。据我所知,我应该运行

dotnet ef dbcontext scaffold xxxx
,我没有收到任何错误,但我的项目中没有添加任何模型。

有人可以解释一下我如何使用具有 CRUD 功能的数据库优先方法吗?

entity-framework .net-6.0
4个回答
2
投票

这个示例命令应该可以工作

dotnet ef dbcontext scaffold "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=ShopDB" Microsoft.EntityFrameworkCore.SqlServer --output-dir Models

0
投票

我刚刚完成了那个练习,并遵循了以下步骤。

首先使用 nuget 包管理器安装以下内容:

Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.SqlServer

然后在包管理器控制台中运行以下命令:

dotnet ef dbcontext scaffold "Data Source=.;Initial Catalog=databaseName;Trusted_Connection=true" Microsoft.EntityFrameworkCore.SqlServer --output-dir Entities

我确实收到以下错误

The Entity Framework tools version '5.0.14' is older than that of the runtime '6.0.8'. Update the tools for the latest features and bug fixes. See https://aka.ms/AAc1fbw 

然后我在包管理器控制台中运行以下脚本:

dotnet tool update --global dotnet-ef --version 6.0.8

0
投票

如评论中所述,我也在使用 EF Core Power Tools。有时,EF Core Power Tools 会给出有关失败的错误,您可以看到您遗漏了什么。绝对应该有机会......

在 MS EF 学习网站上,他们说“为 DbContext 生成代码并为数据库生成实体类型。为了使此命令生成实体类型,数据库表必须具有主键”。还有很多信息。

很少,我们会忘记给我们的表添加键。表的字段类型可能不兼容。

EF 核心 | MS学习


-1
投票

你应该使用 Frameworks 作为 Microsoft.NETCore.App

来自 NuGet 包管理器的包

  1. Microsoft.EntityFrameworkCore
  2. Microsoft.EntityFrameworkCore.SqlServer

现在您可以运行命令:

Scaffold-DbContext "Server=10.10.10.123;Database=Testdb; user id=sa; 密码 = Sa1234" Microsoft.EntityFrameworkCore.SqlServer -OutputDir 模型 -Context TestDBContext -Tables employee

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