0

한 가지 문제를 제외하고 SQL2012 데이터베이스를 MySQL로 마이그레이션했습니다.지정된 MySQL 및 스키마로의 마이그레이션이 올바르지 않습니다.

MySQL 데이터베이스에 연결할 때 다음과 같은 오류가 발생합니다.

데이터베이스를 초기화하는 동안 예외가 발생했습니다.

자세한 내용은 InnerException을 참조하십시오. 지정한 스키마가 유효하지 않습니다. 오류 : (0,0) : 오류 0040 : 유형 nvarchar (max)가 네임 스페이스 또는 별칭으로 정규화되지 않았습니다. 자격이 없으면 프리미티브 유형 만 사용할 수 있습니다.

이것은 클래스의 모든 String 속성에 대해 발생합니다.

나는 다음과 같은 시도 :

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { modelBuilder.HasDefaultSchema(String.Empty);} 

그러나 나는 여전히 오류가 발생합니다.

누구든지이 문제를 해결할 수있는 제안 사항이 있습니까?

은 또한 MySQL의 마이그레이션을 생성하기 위해 시도했지만 나는 다음과 같은 오류 얻을 :

No Entity Framework provider found for the ADO.NET provider with invariant name 'MySql.Data.MySqlClient'. Make sure the provider is registered in the 'entityFramework' section of the application config file. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information. 

코드에서 MySQLProvider을 설정하는 방법이 있나요를? 내가 추가 한 이력 테이블을 마이그레이션 할 때

public class EF6MySQLDbConfiguration : DbConfiguration 
    { 
    public EF6MySQLDbConfiguration() 
    { 
     if (CustomConnectionFactory.ServerName == "MySQL") 
     { 
     SetExecutionStrategy(MySql.Data.Entity.MySqlProviderInvariantName.ProviderName,() => new MySql.Data.Entity.MySqlExecutionStrategy()); 
     AddDependencyResolver(new MySql.Data.Entity.MySqlDependencyResolver()); 
     //Type t = typeof(MySqlProviderServices); 
     } 
     SetDefaultConnectionFactory(new CustomConnectionFactory()); 
    } 

문제를 해결하려면 : 여기

내 DBConfiguration입니다

이 솔루션은 다음 줄을 추가하는 것입니다
public Configuration() 
    { 
     AutomaticMigrationsEnabled = false; 

     if (EF6MySQL.DataAccess.CustomConnectionFactory.ServerName == "MySQL") 
     { 
      SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator()); 
      SetHistoryContextFactory("MySql.Data.MySqlClient", (conn, schema) => new MySql.Data.Entity.MySqlHistoryContext(conn, schema)); 
     } 
    } 
+0

원래 모델의 모습과 마이그레이션 방법을 조금 더 설명하십시오. 정확히 무엇을하고 있느냐에 따라 새 데이터베이스 유형의 모델을 업데이트해야 할 수 있습니다. – JotaBe

+0

모델은 클래스의 코드 우선 및 패키지 관리자 콘솔의 마이그레이션 추가를 사용하여 만들어졌습니다. 원래 마이그레이션을 생성하기 위해 SQL2012를 대상으로했습니다. MySQL은 자동으로 nvarchar (max)를 longtext로 변환합니다. 데이터베이스 백엔드 중 하나를 실행할 수있는 유연성이 필요합니다. – RentUrApp

+0

죄송합니다. 새 MySQL 데이터베이스를 만들거나, SQL Server 마이그레이션 등에서 무엇을 원하는지 아직 이해할 수 없습니다. 좀 더 구체적으로 말하십시오. 당신이 이미 해왔 던 일과 훨씬 더 분명한 방법으로해야 할 일을하십시오. 나는 진짜 문제를 이해할 수 없다. 질문을 수정하고 가능한 모든 정보를 추가하십시오. 그것은 당신이 MySQL 데이터베이스에 대해 SQL 서버 SQL 마이 그 레이션 생성기를 사용하는 것이 분명하지만, 당신의 구성과 코드를 보지 않고, 왜 모르겠어요. – JotaBe

답변