Создал в MySQL тестовую базу. Одна таблица:
CREATE TABLE testentity.test (
id INT(11) NOT NULL AUTO_INCREMENT,
test VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (id)
)
ENGINE = INNODB,
CHARACTER SET utf8,
COLLATE utf8_general_ci;
Пробую создать модель этой таблицы в коде с помощью EF5.
Выбираю добавить существующий элемент->модель ADO.NET EDM->коструктор EF из существующей базы->выбираю провайдера и подключение->выбираю таблицу и жму ГОТОВО.
Получаю ошибку:
В логах:
Невозможно создать модель из-за следующего исключения: "System.Data.Entity.Core.EntityCommandExecutionException: Произошла ошибка при выполнении определения команды. Дополнительные сведения приведены во внутреннем исключении. ---> MySql.Data.MySqlClient.MySqlException: Illegal mix of collations for operation 'UNION'
в MySql.Data.MySqlClient.MySqlStream.ReadPacket()
в MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
в MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId)
в MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
в MySql.Data.MySqlClient.MySqlDataReader.NextResult()
в MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
в MySql.Data.Entity.EFMySqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
в System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
в System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<Reader>b__c(DbCommand t, DbCommandInterceptionContext`1 c)
в System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
в System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)
в System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(CommandBehavior behavior)
в System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
в System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
--- Конец трассировки внутреннего стека исключений ---
в System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
в System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.Execute(EntityCommand entityCommand, CommandBehavior behavior)
в System.Data.Entity.Core.EntityClient.EntityCommand.ExecuteReader(CommandBehavior behavior)
в Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.SchemaDiscovery.EntityStoreSchemaGeneratorDatabaseSchemaLoader.LoadDataTable[T](String sql, Func`2 orderByFunc, DataTable table, EntityStoreSchemaFilterObjectTypes queryTypes, IEnumerable`1 filters, String[] filterAliases)
в Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.SchemaDiscovery.EntityStoreSchemaGeneratorDatabaseSchemaLoader.LoadRelationships(IEnumerable`1 filters)
в Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.SchemaDiscovery.EntityStoreSchemaGeneratorDatabaseSchemaLoader.LoadStoreSchemaDetails(IList`1 filters)
в Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelGenerator.GetStoreSchemaDetails(StoreSchemaConnectionFactory connectionFactory)
в Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelGenerator.CreateStoreModel()
в Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelGenerator.GenerateModel(List`1 errors)
в Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelBuilderEngine.GenerateModels(String storeModelNamespace, ModelBuilderSettings settings, List`1 errors)
в Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelBuilderEngine.GenerateModel(ModelBuilderSettings settings, IVsUtils vsUtils, ModelBuilderEngineHostContext hostContext)".
Загрузка метаданных из базы данных заняла 00:00:00.4465448.
Создание модели заняло 00:01:21.3694912.
Пробовал менять Collation всей базы, таблицы и отдельных столбцов на latin1_swedish_ci (советы из гугла) не помогло.
UPD:
Пробовал менять на EF6, но когда доходит дело до выбора таблиц для экспорта визард просто закрывается.
Поставил сервер версии 5.5 вместо 8.0.12 и все заработало. Спасибо @AlexanderPetrov за подсказку
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как сделать в моей 2д игре, так, чтобы игра не отслеживала моё палец (тач), когда я нажимаю на кнопки ходьбыВ моей игре, оружие персонажа следит...
Я пытаюсь кастомизировать элемент TreeView с помощью шаблоновВ дереве будет 2 уровня узлов (родитель и дочерний)
Использую в проекте SQLite (устанавливал через NuGet) и DapperВ проекте используется пул потоков для чтения из БД, запись в БД производится из отдельного...