在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]
P.S。我已经在项目中添加了“ Microsoft.EntityFrameworkCore.Design”包。
答案 0 :(得分:1)
但是我使用下面的命令修复了它。
> 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
答案 1 :(得分:1)
在Linux Mint 20上,我成功做到了:
dotnet ef dbcontext scaffold 'Server=localhost,1433;Database=MyAPICore;User ID=sa;Password=p4ssw0rd!;' Microsoft.EntityFrameworkCore.SqlServer -o Models -c 'ApiDbContext' -d -f
答案 2 :(得分:0)
我对.NET脚手架不熟悉,但是我可以告诉您,bash并不是您的问题。我相信从“用户ID”中删除空格时出现的错误是无关的,并且该空格正在按预期工作。相反,您会收到一个无法识别SqlServer命令的错误。这可能是因为未安装或未正确设置路径/权限。
https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer/