我尝试在 .NET Core 6 项目中运行的最小 API 中使用 Entity Framework。据我所知,我应该运行
dotnet ef dbcontext scaffold xxxx
,我没有收到任何错误,但我的项目中没有添加任何模型。
有人可以解释一下我如何使用具有 CRUD 功能的数据库优先方法吗?
这个示例命令应该可以工作
dotnet ef dbcontext scaffold "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=ShopDB" Microsoft.EntityFrameworkCore.SqlServer --output-dir Models
我刚刚完成了那个练习,并遵循了以下步骤。
首先使用 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
如评论中所述,我也在使用 EF Core Power Tools。有时,EF Core Power Tools 会给出有关失败的错误,您可以看到您遗漏了什么。绝对应该有机会......
在 MS EF 学习网站上,他们说“为 DbContext 生成代码并为数据库生成实体类型。为了使此命令生成实体类型,数据库表必须具有主键”。还有很多信息。
很少,我们会忘记给我们的表添加键。表的字段类型可能不兼容。
你应该使用 Frameworks 作为 Microsoft.NETCore.App
来自 NuGet 包管理器的包
现在您可以运行命令:
Scaffold-DbContext "Server=10.10.10.123;Database=Testdb; user id=sa; 密码 = Sa1234" Microsoft.EntityFrameworkCore.SqlServer -OutputDir 模型 -Context TestDBContext -Tables employee