Не удается найти метод UseMysql в DbContextOptions

я играю с ядром dotnet в linux, и я пытаюсь настроить свой DbContext со строкой подключения к серверу mysql.

мой DbContext выглядит так:

using Microsoft.EntityFrameworkCore;
using Models.Entities;

namespace Models {
    public class SomeContext : DbContext
    {
        //alot of dbSets...
        public DbSet<SomeEntity> SomeDbSet { get; set; }

        public EsportshubContext(DbContextOptions<SomeContext> options) : base(options) {

        }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
        {
            optionsBuilder.UseMysql //Cannot find this method
        }


        protected override void OnModelCreating(ModelBuilder modelBuilder) 
        {
            //using modelBuilder to map some relationships
        }
    }
}

мои зависимости выглядят так:

"dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Configuration.CommandLine": "1.0.0",
    "Microsoft.AspNetCore.Mvc":"1.0.0",
    "Microsoft.EntityFrameworkCore": "1.0.1",
    "MySql.Data.Core": "7.0.4-ir-191",
    "MySql.Data.EntityFrameworkCore": "7.0.4-ir-191"
  },

Я также попытался использовать сервер mysql в моем запуске.cs в следующем коде

public class Startup
    {

        public void ConfigureServices(IServiceCollection services)
        {
            var connection = @"Server=(localdb)mssqllocaldb;Database=EFGetStarted.AspNetCore.NewDb;Trusted_Connection=True;";
            services.AddDbContext<EsportshubContext>(options => options.UseMysql); //Cannot find UseMysql*
        }

Я попытался изменить свою директиву с

using Microsoft.EntityFrameworkCore;

to

using MySQL.Data.EntityFrameworkCore;

какой смысл? может быть? но тогда все ссылки на DbContext и DbSet исчезли, поэтому я полагаю, что решение-это своего рода смесь??

2 ответов


вам нужно

using Microsoft.EntityFrameworkCore;
using MySQL.Data.EntityFrameworkCore.Extensions;

Oracle не соответствует стандартным практикам при использовании инъекции зависимостей, поэтому все немного отличается. Стандартная практика заключается в том, чтобы поместить методы расширения для инъекции Depedency в Microsoft.Extensions.DependencyInjection пространство имен, которое входит в большинство ASP.NET основные проекты приложений, поэтому метод становится автоматически доступным при импорте пакета.


Если вы не используете MySQL.Data.EntityFrameworkCore пакета. Вы можете использовать Pomelo.EntityFrameworkCore.MySql пакет для MySql на ядре EntityFramework.

Если да, добавьте следующие строки:

using Microsoft.EntityFrameworkCore;
using Pomelo.EntityFrameworkCore;