Cannot find the UseMysql method on DbContextOptions

asp.net-core c# entity-framework mysql

Question

I am playing around with the dotnet core on linux, and i am trying to configure my DbContext with a connection string to a mysql Server.

my DbContext looks like so:

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
        }
    }
}

My dependencies looks like so:

"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"
  },

I also tried to use the mysql server in my Startup.cs in the following code

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*
        }

I tried to change my directive from

using Microsoft.EntityFrameworkCore;

to

using MySQL.Data.EntityFrameworkCore;

Which makes sense? maybe? but then all of the references to DbContext and DbSet is gone, so i suppose the solution is a mix of sorts??

1
11
10/15/2016 1:58:54 PM

Accepted Answer

You need

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

Oracle is not complying to the standard practices when using Dependency Injection, so its all a bit different. The standard practice is to put the extension methods for Depedency Injection into Microsoft.Extensions.DependencyInjection namespace, which is included in most ASP.NET Core app projects so the method becomes automatically available when a package is imported.

22
10/15/2016 2:32:39 PM

Popular Answer

If you are not using MySQL.Data.EntityFrameworkCore package. You could be using the Pomelo.EntityFrameworkCore.MySql package for MySql on EntityFramework Core.

If so, add these lines:

using Microsoft.EntityFrameworkCore;
using Pomelo.EntityFrameworkCore;


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow