2016-10-15 2 views
5

리눅스에서 dotnet 코어를 사용 중입니다. mysql 서버에 대한 연결 문자열로 DbContext를 구성하려고합니다.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; 

오라클은 의존성 삽입 (Dependency Injection)을 사용하는 경우 표준 관행을 준수, 그래서 그것의 모든 조금 다른되지해야합니다. 표준 연습은 Dependency Injection의 확장 메서드를 대부분의 ASP.NET 핵심 응용 프로그램 프로젝트에 포함되어있는 Microsoft.Extensions.DependencyInjection 네임 스페이스에 배치하여 패키지를 가져올 때 메서드를 자동으로 사용할 수있게하는 것입니다.

+0

당신은 MySQL.Data.EntityFrameworkCore.Extensions가 정확히 "사용하는 문"이라고 생각 했습니까? – DenLilleMand

+1

안녕하세요, 오라클이'Microsoft. *'네임 스페이스에 코드를 넣는 방법은 없습니다 : –

+0

@IvanStoev : 어떤 프레임 워크 전용 코드도 아니고, Mysql 공급자를 삽입/등록하는 데 사용되는 확장 메서드이기 때문에'Microsoft입니다. Extension.DependencyInjection'은 코드가 ** ASP ** .NET 코어에 도입 된 종속성 삽입에 매우 한정되어 있기 때문에 완벽하게 적합합니다. – Tseng

관련 문제