我正在尝试连接到ASP.NET Core中的MySql Workbench数据库。我正在遵循一个youtube指南,在那里我被告知要在Package Manager控制台中写一些东西:
Add-Migration "Initial-Create"
然后:
Update-Database
现在,当我运行第二个命令时,我得到的是:
Build started...
Build succeeded.
System.ArgumentException: Keyword not supported: 'port'.
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.Storage.Internal.SqlServerConnection.CreateDbConnection()
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.get_DbConnection()
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(Boolean errorsExpected)
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.<>c__DisplayClass18_0.<Exists>b__0(DateTime giveUp)
at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.<>c__DisplayClass12_0`2.<Execute>b__0(DbContext c, TState s)
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute[TState,TResult](IExecutionStrategy strategy, TState state, Func`2 operation, Func`2 verifySucceeded)
at Microsoft.EntityFrameworkCore.ExecutionStrategyExtensions.Execute[TState,TResult](IExecutionStrategy strategy, TState state, Func`2 operation)
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.Exists(Boolean retryOnNotExists)
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerDatabaseCreator.Exists()
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()
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.UpdateDatabaseImpl(String targetMigration, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
Keyword not supported: 'port'.
我的连接字符串如下:
"AuthDBContextConnection": "Server=localhost;Port=xxxx;Database=xxxx;User ID = xxx;Password=xxxx;Pooling=false;SslMode=none;convert zero datetime=True;Trusted_Connection=True;MultipleActiveResultSets=true"
我试过在谷歌上搜索它,并检查stackoverflow是否有类似的问题,但找不到解决方案。我遇到的每个解决方案都需要更改web.config文件中的某些内容。问题是我的项目中甚至没有web.config文件。
有什么想法吗?
谢谢!
应该这样做:
"AuthDBContextConnection": "Server=localhost,YourPortHere;Database=xxxx;User ID = xxx;Password=xxxx;Pooling=false;SslMode=none;convert zero datetime=True;Trusted_Connection=True;MultipleActiveResultSets=true"
使用ASP.net核心和数据库时出现类似错误。ASP.net核心的默认数据库提供程序是SQL Server,但如果您使用的是其他提供程序,则会发现此错误。
看起来你在你的项目中使用MySQL数据库。在startup.cs
文件中更新您的代码,如下所示。
public void ConfigureServices(IServiceCollection services)
{
....
services.AddDbContext<YourDbContextName>(options =>
options.UseMySql(
Configuration.GetConnectionString("AuthDBContextConnection")));
}
不要忘记安装NuGet包MySql.Data.EntityFramework
希望它能解决你的问题。
更新
您需要这些NuGet软件包,请安装这些。它会解决你的问题。
using Microsoft.EntityFrameworkCore;
using MySQL.Data.EntityFrameworkCore.Extensions;
using MySql.Data.EntityFrameworkCore
再次更新
安装这些:-
Microsoft.EntityFrameworkCore (v5.0.0 – the latest stable version)
Microsoft.EntityFrameworkCore.Tools (v5.0.0 – the latest stable version)
Pomelo.EntityFrameworkCore.MySql (version 5.0.0-alpha.2)
您的连接字符串如下所示:-
"ConnectionStrings": {
"DefaultConnection": "server=localhost; port=3306; database=test; user=root; password=Wxp@Mysql; Persist Security Info=False; Connect Timeout=300"
}
并更新您的startup.cs
文件:-
public void ConfigureServices(IServiceCollection services)
{
string mySqlConnectionStr = Configuration.GetConnectionString("DefaultConnection");
services.AddDbContextPool<MyDBContext>(options => options.UseMySql(mySqlConnectionStr, ServerVersion.AutoDetect(mySqlConnectionStr)));
services.AddControllers();
}
现在它将解决您的问题。