Linux Bash上的“ dotnet ef dbcontext scaffold”问题

时间:2018-11-21 05:29:34

标签: bash entity-framework-core asp.net-core-2.0

在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”包。

3 个答案:

答案 0 :(得分:1)

我在Windows上也遇到了同样的问题。 dotnet ef scaffold error

但是我使用下面的命令修复了它。

> dotnet ef dbcontext scaffold "Server=.\;Database=YourDatabase;Trusted_Connection=False; User ID=sa; Password=YourPassword;" Microsoft.EntityFrameworkCore.SqlServer -o Model -c "YourDBContext"

就我自己而言,我试图弄清楚我们以前的命令出了什么问题,尽管有一些答案可能并不适用于所有人,但我得到了一些答案。

  1. 在使用“服务器”键之前,我使用单引号,因此将其更改为双引号。
  2. 在我的“。”对于服务器名称,我添加了反斜杠“ \”
  3. 我在数据库上下文中用双引号引起来。

尽管我已采取所有这些步骤,但事实是我不知道哪个实际有效,但是我可以向您保证上述代码可以很好地工作。但是,您可以在下面找到我发现的文章。 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/