EFCORE逆向工程生成实体类

前置条件:.net6.0 ,efcore 

新建了一个项目,项目名:EFCore

步骤(以下步骤不是最正确的步骤,大家按照官网操作比较好,我主要记录了自己使用时遇到的各种问题,并找到解决方案,如何一一解决,希望对大家有帮助)

1、新建控制台项目之后,通过nuget包下载

Microsoft.EntityFrameworkCore 7.0.16

Microsoft.EntityFrameworkCore.Design 7.0.16

Microsoft.EntityFrameworkCore.SqlServer 7.0.16

Microsoft.Extensions.Configuration

2、 通过"程序包管理器控制台" 执行命令"Scaffold-DbContext"提示命令无法执行

PM> Scaffold-DbContext "Data Source=.;Initial Catalog=mdsdb;persist security info=True;user id=sa;password=123;MultipleActiveResultSets=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Force -UseDatabaseNames
Scaffold-DbContext : 无法将“Scaffold-DbContext”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ Scaffold-DbContext "Data Source=.;Initial Ca ...
+ ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Scaffold-DbContext:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
 

3、网上说需要安装dotnet tool install --global dotnet-ef ,我抄了命令进行安装但是出现问题。发现版本不对,然后我指定了版本就成功安装了

PM> dotnet tool install --global dotnet-ef
C:\Users\Administrator\AppData\Local\Temp\401hubxy.0la\restore.csproj : error NU1202: 包 dotnet-ef 8.0.2 与 net6.0 (.NETCoreApp,Version=v6.0) / any 不兼容。 包 dotnet-ef 8.0.2 支持: net8.0 (.NETCoreApp,Version=v8.0) / any
dotnet : 无法还原工具包。
所在位置 行:1 字符: 1
+ dotnet tool install --global dotnet-ef
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (无法还原工具包。:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
 
工具“dotnet-ef”安装失败。此故障可能由以下原因导致:

* 你尝试安装预览版,但未使用 --version 选项来指定该版本。
* 已找到具有此名称的包,但是它不是 .NET 工具。
* 无法访问所需的 NuGet 源,这可能是由于 Internet 连接问题导致。
* 工具名称输入错误。

有关更多原因(包括强制包命名),请访问 https://aka.ms/failure-installing-tool
PM> dotnet tool install --global dotnet-ef --version 6.0
可使用以下命令调用工具: dotnet-ef
已成功安装工具“dotnet-ef”(版本“6.0.0”)。

3.1

 还遇到一种情况

PM> dotnet tool install --global dotnet-ef --version 6.0
dotnet : Unhandled exception: Microsoft.DotNet.Cli.NuGetPackageDownloader.NuGetPackageInstallerException: 已启用包源映射,但在指定的包 ID 下找不到源: dotnet-ef。有关详细信息,请参阅包源映射文档(https://aka.ms/nuget-package-source-mapping)。

解决方案需要这里配置下

4、我按照官网修改了命令改成了

dotnet ef dbcontext scaffold "Server=.;Database=mdsdb;Trusted_Connection=True;user id=sa;password=123" Microsoft.EntityFrameworkCore.SqlServer -o Models


提示No project was found. Change the current working directory or use the --project option.

然后我再次修改命令
 dotnet ef dbcontext scaffold "Server=.;Database=mdsdb;Trusted_Connection=True;user id=sa;password=123" Microsoft.EntityFrameworkCore.SqlServer -o Models --project EFCore

提示
The Entity Framework tools version '6.0.0' is older than that of the runtime '7.0.16'. 
竟然版本还要对得上。。 

我马上修改nuget里面的版本号,
Microsoft.EntityFrameworkCore 6.0.0

Microsoft.EntityFrameworkCore.Design 6.0.0

Microsoft.EntityFrameworkCore.SqlServer 6.0.0

然后提示

To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see http://go.microsoft.com/fwlink/?LinkId=723263.

意思是"为了保护连接字符串中潜在的敏感信息,应该将其从源代码中删除。通过使用Name=语法从配置中读取连接字符串,可以避免对连接字符串进行脚手架搭建" 

这个问题我没有解决掉。后续有空在解决把

我新建另一个efcoretool的项目,然后执行下面的脚本,就成功了

 dotnet ef dbcontext scaffold "Data Source=.;Initial Catalog=mdsdb;user id=sa;password=123" Microsoft.EntityFrameworkCore.SqlServer  --project efcoretool
 

相关官网地址

EF Core 工具参考 (.NET CLI) - EF Core | Microsoft Learn

连接字符串 - EF Core | Microsoft Learn

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值