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

问题描述 投票:3回答:2

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

bash entity-framework-core asp.net-core-2.0
2个回答
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


0
投票

我不熟悉.NET脚手架,但我可以告诉你bash不是你的问题。我相信从“用户ID”中删除空格时出现的错误是无关的,并且空间正在按预期工作。相反,您收到的错误是SqlServer命令无法识别。这可能是因为未安装或未正确设置路径/权限。

https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer/

© www.soinside.com 2019 - 2024. All rights reserved.