无法与MySql,.Net Core Api连接

时间:2019-11-28 17:35:11

标签: c# mysql .net-core ado.net

我对此并不陌生,无法将API与数据库连接,我正在使用.Net Core 3MySql 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和安装的软件包的使用的屏幕截图,我不确定这些是正确的还是使用不正确的方式。

Usings of my DbContext

Packages

MySql installations

现在我遇到此错误

  

“内部连接致命错误。”

我尝试使用不同的连接字符串得到不同的错误,并尝试搜索答案,但是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 3MySql.Data.EntityFrameworkCore for Entity Framework - 8.0.18不兼容,所以我回滚到Microsoft.EntityFrameworkCore 2.1,现在我得到Unable to connect to any of the specified MySQL hosts.

2 个答案:

答案 0 :(得分:0)

好的,正如Panagiotis Kanavos提到的那样,我使用了错误的连接字符串,所以我将其更改为:

Server=localhost;Database=portaldb;user=***;password=***

也正如东东所说,我使用的是options.UseSqlServer(connection)而不是services.AddDbContext<PortalContext>(options => options.UseMySQL(connection));

为此,我只需要更改某些版本,Microsoft.EntityFrameworkCore 3MySql.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