2016-10-15 6 views
5

私はLinux上でdotnet coreを使用しています.DbContextをmysqlサーバへの接続文字列で設定しようとしています。DbContextOptionsでUseMysqlメソッドを見つけることができません

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

は、私はまた、次のコードでは、私のStartup.csでMySQLサーバーを使用しようとした

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 MySQL.Data.EntityFrameworkCore; 

から210

using Microsoft.EntityFrameworkCore; 

?多分?しかし、DbContextとDbSetへの参照はすべて消えてしまったので、解決策はさまざまなものがあると思います??

答えて

11

あなたは

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

を必要とするOracleは、依存性注入を使用した場合の標準的な慣行に従うので、そのすべてのビット異なるされていません。標準的な方法は、Dependency Injectionの拡張メソッドをMicrosoft.Extensions.DependencyInjection名前空間に配置することです。これは、ほとんどのASP.NETコアアプリケーションプロジェクトに含まれているため、パッケージのインポート時にメソッドが自動的に利用できるようになります。

+0

MySQL.Data.EntityFrameworkCore.Extensionsは、使用したのとまったく同じ "使用している文"でした。 – DenLilleMand

+1

ちょっと、オラクルが 'Microsoft。*'名前空間の下にコードを置く方法はありません。 –

+0

@IvanStoev:これはフレームワーク固有のコードではなく、Mysqlプロバイダをインジェクト/登録するための拡張メソッドです。 Extension.DependencyInjection'は、(ASP).NETコアに導入された依存性注入に対して**非常に具体的な**ため、完全に適しています。 – Tseng

関連する問題