Я перенес базу данных SQL2012 в 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());
}
Чтобы решить проблему при переносе таблицы истории, я добавил:
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));
}
}