我对此并不陌生,无法将API与数据库连接,我正在使用.Net Core 3
,MySql Server 8.0.18
,还下载了Connector / Net 8.0.18和visual Studio2019。这是我的字符串连接:
"Server=localhost,3306;Database=portaldb;user=****;password=****"
我的Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
var connection = Configuration.GetConnectionString(Defaultconnection);
var mappingConfig = new MapperConfiguration(mc => {
mc.AddProfile(new MappingProfile());
});
var mapper = mappingConfig.CreateMapper();
services.AddControllers();
services.AddCors(options =>
{
options.AddPolicy(MyAllowSpecificOrigins,
builder =>
{
builder.AllowAnyHeader().AllowAnyOrigin().AllowAnyMethod();
});
});
services.AddSingleton(mapper);
services.AddTransient<IDbContext, PortalContext>();
services.AddTransient<ISqlRepository, SqlRepository>();
services.AddDbContext<PortalContext>(options => options.UseMySQL(connection));
}
我的DbContext:
public class PortalContext : DbContext, IDbContext
{
public PortalContext(DbContextOptions options) : base(options)
{
}
private DbSet<UsersModel> Users { get; set; }
private DbSet<CandidatesModel> Candidates { get; set; }
private DbSet<UserTypesModel> UserTypes { get; set; }
private DbSet<CompetenciesModel> Competencies { get; set; }
private DbSet<JobsModel> Jobs { get; set; }
private DbSet<SkillsAssessmentsModel> SkillsAssessments { get; set; }
private DbSet<SkillSetModel> Skills { get; set; }
///some methods
}
以下是我的DbContext和安装的软件包的使用的屏幕截图,我不确定这些是正确的还是使用不正确的方式。
现在我遇到此错误
“内部连接致命错误。”
我尝试使用不同的连接字符串得到不同的错误,并尝试搜索答案,但是MySql
几乎没有信息,Sql server
几乎没有信息,而MySql
则没有信息。 / p>
修改 我更改了字符串连接和启动,但是仍然出现错误
: 'Method 'get_Info' in type 'MySql.Data.EntityFrameworkCore.Infraestructure.MySQLOptionsExtension' from assembly 'MySql.Data.EntityFrameworkCore, Version=8.0.18.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' does not have an implementation.'
编辑2
好的,我读到Microsoft.EntityFrameworkCore 3
与MySql.Data.EntityFrameworkCore for Entity Framework - 8.0.18
不兼容,所以我回滚到Microsoft.EntityFrameworkCore 2.1
,现在我得到Unable to connect to any of the specified MySQL hosts.
答案 0 :(得分:0)
好的,正如Panagiotis Kanavos提到的那样,我使用了错误的连接字符串,所以我将其更改为:
Server=localhost;Database=portaldb;user=***;password=***
也正如东东所说,我使用的是options.UseSqlServer(connection)
而不是services.AddDbContext<PortalContext>(options => options.UseMySQL(connection));
为此,我只需要更改某些版本,Microsoft.EntityFrameworkCore 3
与MySql.Data.EntityFrameworkCore for Entity Framework - 8.0.18
不兼容,我回滚到Microsoft.EntityFrameworkCore 2.1
,现在可以使用了。
答案 1 :(得分:0)
MySql.Data.EntityFrameworkCore支持并且仅与EF Core 2.1兼容。对于EF Core 3.0或最新版本,请使用Pomelo.EntityFrameworkCore.MySql