Ho migrato il database SQL2012 su MySQL, a parte un problema.
Ottengo il seguente errore quando mi collego al database MySQL.
Si è verificata un'eccezione durante l'inizializzazione del database.
InnerException per i dettagli: lo schema specificato non è valido. Errori: (0,0): errore 0040: il tipo nvarchar (max) non è qualificato con uno spazio dei nomi o un alias. Solo i tipi primitivi possono essere utilizzati senza qualificazione.
Questo si verifica per ogni proprietà String nelle mie classi.
Ho provato il seguente:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{ modelBuilder.HasDefaultSchema(String.Empty);}
Tuttavia ho ancora l'errore.
Qualcuno ha suggerimenti che potrebbero risolvere il problema.
Ho anche provato a generare una migrazione MySQL ma ottengo il seguente errore:
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.
C'è un modo per impostare MySQLProvider in Code?
Ecco la mia DBConfiguration:
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());
}
Per superare il problema durante la migrazione della tabella della cronologia ho aggiunto:
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));
}
}
La soluzione è aggiungere la seguente riga:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
if (CustomConnectionFactory.ServerName == "MySQL")
{
modelBuilder.Properties<String>().Configure(c => c.HasColumnType("longtext"));
}}