使用Visual Studio和Entity Framework Core 5.0.2连接到MSSQL Server开发者版

3

我下载了一个名为AdentureWorks2019.bak的文件,并在SQL Server Management Studio中进行了恢复。当我使用以下命令尝试在Visual Studio 2019中进行脚手架时:

Scaffold-DbContext 'Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=AdventureWorks;Trusted Connection=True;'  Microsoft.EntityFrameworkCore.SqlServer

我遇到了以下警告:

为了保护连接字符串中的潜在敏感信息,您应该将其移出源代码。您可以使用Name = 语法从配置文件中读取它而避免使用脚手架连接字符串 - 请参见https://go.microsoft.com/fwlink/?linkid=2131148。有关存储连接字符串的更多指南,请参见http://go.microsoft.com/fwlink/?LinkId=723263

然后出现以下错误:
 PM> Scaffold-DbContext 'Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=AdventureWorks;Trusted Connection=True;'  Microsoft.EntityFrameworkCore.SqlServer
Build started...
Build succeeded.
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.
System.ArgumentException: Keyword not supported: 'trusted connection'.
   at Microsoft.Data.Common.DbConnectionOptions.ParseInternal(Dictionary`2 parsetable, String connectionString, Boolean buildChain, Dictionary`2 synonyms, Boolean firstKey)
   at Microsoft.Data.Common.DbConnectionOptions..ctor(String connectionString, Dictionary`2 synonyms)
   at Microsoft.Data.SqlClient.SqlConnectionString..ctor(String connectionString)
   at Microsoft.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous)
   at Microsoft.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKey key, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions)
   at Microsoft.Data.SqlClient.SqlConnection.ConnectionString_Set(DbConnectionPoolKey key)
   at Microsoft.Data.SqlClient.SqlConnection.set_ConnectionString(String value)
   at Microsoft.Data.SqlClient.SqlConnection..ctor(String connectionString)
   at Microsoft.EntityFrameworkCore.SqlServer.Scaffolding.Internal.SqlServerDatabaseModelFactory.Create(String connectionString, DatabaseModelFactoryOptions options)
   at Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineerScaffolder.ScaffoldModel(String connectionString, DatabaseModelFactoryOptions databaseOptions, ModelReverseEngineerOptions modelOptions, ModelCodeGenerationOptions codeOptions)
   at Microsoft.EntityFrameworkCore.Design.Internal.DatabaseOperations.ScaffoldContext(String provider, String connectionString, String outputDir, String outputContextDir, String dbContextClassName, IEnumerable`1 schemas, IEnumerable`1 tables, String modelNamespace, String contextNamespace, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames, Boolean suppressOnConfiguring, Boolean noPluralize)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContextImpl(String provider, String connectionString, String outputDir, String outputDbContextDir, String dbContextClassName, IEnumerable`1 schemaFilters, IEnumerable`1 tableFilters, String modelNamespace, String contextNamespace, Boolean useDataAnnotations, Boolean overwriteFiles, Boolean useDatabaseNames, Boolean suppressOnConfiguring, Boolean noPluarlize)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.ScaffoldContext.<>c__DisplayClass0_0.<.ctor>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
Keyword not supported: 'trusted connection'.

我已经尝试搜索解决方案,但没有成功。如果有人能帮忙,我将不胜感激!

2个回答

3
连接字符串的关键字是"Integrated Security"或"Trusted_Connection",不是"Trusted Connection"。请参考文档:SqlConnection.ConnectionString

1
谢谢你的帮助。我尝试了你的建议,但这次返回以下内容:无法打开登录请求的数据库“AdventureWorks”。用户“RABIH-PC\Rabih”的登录失败。 - rabih
2
然后为 RABIH-PC\Rabih 创建一个登录,并将其添加到 sysadmin 固定服务器角色中。 - David Browne - Microsoft
3
谢谢。它起作用了。首先,我已将RABIH-PC\Rabih添加到sysadmin,然后将我的电脑名称指定为Data Source,对于Scaffold-DbContext 'Data Source=Rabih-PC;Database=AdventureWorks;Integrated Security=True;' Microsoft.EntityFrameworkCore.SqlServer的操作。 - rabih

0
你可以尝试以下代码:
Scaffold-DbContext 'Server=(localdb)\MSSQLLocalDB;Database=AdventureWorks;Trusted_Connection=True;"  Microsoft.EntityFrameworkCore.SqlServer

根据反馈进行了修正 - Nantharupan
谢谢你的帮助,但仍然出现相同的错误! - rabih

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接