【问题标题】:Keyword not supported: 'userid' error不支持关键字:“用户 ID”错误
【发布时间】:2018-05-18 09:43:50
【问题描述】:

我已经克隆了这个源代码 (https://code.msdn.microsoft.com/Onion-Architecture-In-9c58c06d)。我正在使用 mysql 和我的连接字符串

  "ConnectionStrings": {
    "DefaultConnection": "server=localhost;userid=root;pwd=root;port=3306;database=ddd;sslmode=none;"
  },

在我的包管理器控制台命令Add-Migration FirstMigration 成功但是,Update-Database 正在扔我

System.ArgumentException: Keyword not supported: 'userid'.
   at System.Data.Common.DbConnectionOptions.ParseInternal(Dictionary`2 parsetable, String connectionString, Boolean buildChain, Dictionary`2 synonyms)
   at System.Data.Common.DbConnectionOptions..ctor(String connectionString, Dictionary`2 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.Storage.Internal.SqlServerConnection.CreateDbConnection()
   at Microsoft.EntityFrameworkCore.Internal.LazyRef`1.get_Value()
   at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
   at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_1.<.ctor>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
Keyword not supported: 'userid'.

我做错了吗?

【问题讨论】:

  • 代码在哪里?什么数据库?这不是有效的 SQL Server 连接字符串。您不能使用连接字符串,例如用于 Oracle 与 SQL Server 或 MySQL。
  • 顺便说一句,您在此处发布的内容看起来 nothing 类似于示例中的连接字符串。调用堆栈显示您尝试使用 SQL Server 提供程序执行迁移代码,而连接字符串明显针对另一个数据库。您是如何配置上下文和迁移的?
  • 谢谢!我得到了它!我正在使用旧应用程序中的连接字符串

标签: asp.net-core .net-core asp.net-core-mvc


【解决方案1】:

这不是 SQL Server 的有效连接字符串。 userid 应该是 User IDpwd 应该是 Password。例如

Server=servername\instancename;Database=dbname;User Id=username;Password=password;

更多示例参见: https://www.connectionstrings.com/sql-server/

【讨论】:

  • 谢谢!如果我必须改用mysql,该怎么办?在 nuget 包管理器中,许多包要更新,但它说 packpackage restore 失败。它也不允许我安装 EntityFrameworkCore.MySql
【解决方案2】:

您引用的代码使用了 MsSQL。如果您希望使用 mysql,则需要更改代码。

在参考代码中,有一个名为Startup.cs的类。

方法public void ConfigureServices(IServiceCollection services) 中有一行需要更改。

目前该行声明:

services.AddDbContext<ApplicationContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

简而言之:将 ApplicationContext 类型的 DbContext 添加到服务集合中。要实例化实例,请使用以下选项:

UseSqlServer 带有一个名为 DefaultConnection 的连接字符串

您需要更改这些选项以反映 mysql。


可能的解决方案

  1. 安装包MySql.Data.EntityFrameworkCore
  2. 将行改为:
services.AddDbContext(options => options.UseMySQL(Configuration.GetConnectionString("DefaultConnection")));

【讨论】:

    猜你喜欢
    • 2017-04-21
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多