首页 > 解决方案 > 实体框架核心 - 错误:不支持关键字:“服务器”

问题描述

我正在使用实体框架核心 2.1。我首先搭建我的实体类,也就是数据库。当我尝试从其中一个 db 表中获取数据时,我收到错误消息“'server' 不支持关键字”。

我用谷歌搜索,看起来我的连接字符串不正确。这是我的json文件中的设置

"DefaultConnection": "\"Server=myDb.com;Database=MyDb;user id=admin;Password=Password;MultipleActiveResultSets=true;Provider=System.Data.SqlClient"

我见过其他类型的 EF 连接,例如

connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=(local);initial catalog=test;integrated security=True;multipleactiveresultsets=True;App=EntityFramework""

我不确定 .csdl、ssdl 和 msl。

任何帮助表示赞赏。谢谢。

错误:

System.ArgumentException:不支持关键字:“服务器”。

在 System.Data.Common.DbConnectionOptions.ParseInternal(Dictionary 2 parsetable, String connectionString, Boolean buildChain, Dictionary2 synonyms, Boolean firstKey)
在 System.Data.Common.DbConnectionOptions..ctor(String connectionString, Dictionary 1.get_Value() 在 Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open( Boolean errorsExpected) 在 Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable 3 操作,Func 1.Enumerator.MoveNext() 在 Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider._TrackEntities[TOut,TIn](IEnumerable 1 entityTrackingInfos, IList2 synonyms)
at System.Data.SqlClient.SqlConnectionString..ctor(String connectionString)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous)
at System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKey key, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions)
at System.Data.SqlClient.SqlConnection.ConnectionString_Set(DbConnectionPoolKey key) at System.Data.SqlClient.SqlConnection.set_ConnectionString(String value) at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerConnection.CreateDbConnection() at Microsoft.EntityFrameworkCore.Internal.LazyRef
1.Enumerator.BufferlessMoveNext(DbContext _, Boolean buffer) at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](TState state, Func3 verifySucceeded) at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable1 results, QueryContext queryContext, IList1 entityAccessors)+MoveNext() at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor1.EnumeratorExceptionInterceptor.MoveNext() 抛出异常:Microsoft.EntityFrameworkCore.dll 中的“System.ArgumentException”“dotnet.exe”(CoreCLR:clrhost):已加载“C:\Program Files\dotnet\shared\Microsoft.NETCore.App\ 2.1.2\System.IO.MemoryMappedFiles.dll'。跳过加载符号。模块已优化,调试器选项“仅我的代码”已启用。程序“[3112] dotnet.exe”已退出,代码为 -1 (0xffffffff)。

标签: sql-serverentity-framework.net-core

解决方案


简单地从连接字符串的前面和结尾删除 \" 将起作用。在这种情况下,您可以使用完整的连接字符串。

"DefaultConnection": "\"Server=tcp:myDb.com,1433;Initial Catalog=MyDb;Persist Security Info=False;User ID=admin;Password=Password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"\;"

"DefaultConnection": "Server=myDb.com,1433;Initial Catalog=MyDb;Persist Security Info=False;User ID=admin;Password=Password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"

推荐阅读