2014-02-17 2 views
1

두 개의 엔티티 프레임 워크 컨텍스트가 있습니다. 하나는 MySql 용이고 다른 하나는 sql 용입니다. 나는 응용 프로그램을 실행하면 내가 그에게 Database.SetInitializer<MySqlContext>를 제공하여 응용 프로그램 시작에 대한 데이터베이스 유형을 발견 할 경우 나는 그러나 다음과 같은 오류를MySql 및 SqlServer에 EF 컨텍스트를 사용할 수 있습니까?

The default DbConfiguration instance was used by the Entity Framework before the  'MySqlEFConfiguration' type was discovered. 

를 얻을, 내 정상적인 SQL 컨텍스트 이제 MySQL의 공급자를 사용하여 연결을 시도한다.

내 MySQL의 문맥

[DbConfigurationType(typeof(MySqlEFConfiguration))] 
public class ZipCodeContext : DbContext 
{ 
    public DbSet<ZipCode> ZipCodes { get; set; }   
} 

내 정상적인 상황

public class MyContext : DbContext 
{ 
    public DbSet<MyClass> MyClasses{get;set;} 
} 

마침내 나는이 충분히 명확 바랍니다

<entityFramework> 
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
<providers> 
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> 
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
</providers> 

, 나는 '엔티티 프레임 워크 섹션 내 웹 설정 책상에 머리를 두드림.

+0

이 문제를 해결할 수 있었습니까? – James

+0

부정적인 @ 제임스는 결코 그것을 알아낼 수 없었습니다. 나는 평범한 MySql 연결을 사용하고 거기에서 쿼리를 실행하는 것으로 끝났다. – tympaniplayer

+0

후속 조치를 보내 주셔서 감사합니다.이 문제가 발생하면 알려 드리겠습니다. – James

답변

1

My Uow.cs에는 변수로 2 가지 다른 컨텍스트가 있습니다. 결과적으로 개체 초기화 중에 첫 번째 컨텍스트의 DbConfiguration은 두 번째 컨텍스트에만 관심이있는 경우에도 자동으로 적용됩니다. 결과적으로 두 번째 컨텍스트는 디자인을 변경하기 전까지 동일한 오류로 응답했습니다.

갱신

자세한 내용은 - 내가 오라클과 MS SQL 버전에 대해 같은 컨텍스트를 사용하는 코드를 업데이트했다. 해당 db 구성을 제공하기 위해 동일한 어셈블리에서 컨텍스트와 함께 사용자 지정 구성 클래스를 추가하고 DbConfigurationType 특성과 함께 사용합니다. 귀하의 경우는 이런 일이 될 수 :

public class CustomDbConfiguration : DbConfiguration 
{ 
    public CustomDbConfiguration() 
    { 
     if (DbChecker.MySqlInUse) 
      SetConfiguration(new MySqlEFConfiguration()); 
    } 
} 

두 컨텍스트는 그것을

[DbConfigurationType(typeof(CustomDbConfiguration))] 
public class ZipCodeContext : DbContext 
{ 
    public DbSet<ZipCode> ZipCodes { get; set; } 
} 

[DbConfigurationType(typeof(CustomDbConfiguration))] 
public class MyContext : DbContext 
{ 
    public DbSet<MyClass> MyClasses { get; set; } 
} 
+1

일부 코드도 추가하십시오 ... –

0

FYIW을 적용하려고 - 저도 같은 문제가 있었다. 이 문제를 해결 한 유일한 방법은 프로그램 실행 초기에 다음 코드를 추가하는 것입니다.

var needsToBeInstantiated = new EFDBContextConfiguration(); 
EFDBContextConfiguration.SetConfiguration(needsToBeInstantiated); 
관련 문제