在linux bash中发出以下命令时
dotnet ef dbcontext scaffold "Server=192.168.1.5\MSSQLSERVER2017;Database=TestDb;User Id=test;Password=test@987" Microsoft.EntityFrameworkCore.SqlServer -o Models --context AppDbContext -t solid
我收到此错误消息:
Unrecognized command or argument 'Microsoft.EntityFrameworkCore.SqlServer'
我发现它是由命令中的“用户ID”中的空间引起的问题,因为当我删除空格时,我收到此消息。
Keyword not supported: 'userid'
我尝试了很多组合,例如将User \ Id,'User Id',“User Id”,User“”Id以及我在互联网上发现的更多内容,但我仍然坚持这一点。我怎么解决这个问题?
我的EF版本:
Entity Framework Core .NET Command-line Tools
2.1.4-rtm-31024
我的dotnet版本:
.NET Core SDK (reflecting any global.json):
Version: 2.1.500
Commit: b68b931422
Runtime Environment:
OS Name: arch
OS Version:
OS Platform: Linux
RID: arch-x64
Base Path: /opt/dotnet/sdk/2.1.500/
Host (useful for support):
Version: 2.1.6
Commit: 3f4f8eebd8
.NET Core SDKs installed:
2.1.500 [/opt/dotnet/sdk]
.NET Core runtimes installed:
Microsoft.NETCore.App 2.1.6 [/opt/dotnet/shared/Microsoft.NETCore.App]
附:我已经在项目中添加了“Microsoft.EntityFrameworkCore.Design”包。
但我通过使用下面的命令修复它。
> dotnet ef dbcontext scaffold "Server=.\;Database=YourDatabase;Trusted_Connection=False; User ID=sa; Password=YourPassword;" Microsoft.EntityFrameworkCore.SqlServer -o Model -c "YourDBContext"
在我自己的情况下,我试图找出我以前的命令出了什么问题,虽然它们可能并不适用于所有人,但我得到了一些答案。
虽然我采取了所有这些步骤,但事实是,我不知道哪一个实际工作,但我可以向你保证,上面的代码工作得很好。但是你可以查看我在下面找到的文章。 https://www.learnentityframeworkcore.com/walkthroughs/existing-database
我不熟悉.NET脚手架,但我可以告诉你bash不是你的问题。我相信从“用户ID”中删除空格时出现的错误是无关的,并且空间正在按预期工作。相反,您收到的错误是SqlServer命令无法识别。这可能是因为未安装或未正确设置路径/权限。
https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer/