EF Core и MySQL - команда «CREATE DATABASE» Sql выдает ошибку: в синтаксисе SQL имеется ошибка - PullRequest
1 голос
/ 16 января 2020

Я столкнулся с проблемой при попытке создать схему базы данных в MySQL с использованием EF Core.

Ошибка:

"У вас есть ошибка в SQL синтаксис; проверьте руководство, соответствующее вашей MySQL версии сервера, чтобы узнать правильный синтаксис для использования рядом с MY_SHCEME_NAME "

EF Core версия: 2.2.6

MySQL версия сервера : 5.7.19

Код:

 using (var dbEntities = new MyDbContext())
 using (var transaction = dbEntities.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
 {
    try
    {
        dbEntities.Database.ExecuteSqlCommand($"CREATE DATABASE {databaseConnection.Schema}");
        // other commands...                  
        dbEntities.SaveChanges();
        transaction.Commit();
    }
    catch (Exception ex)
    {
         transaction.Rollback();
         log.Error("ConfigureDatabase transaction failed!", ex);
         throw;
     }
 }    

Этот фрагмент кода работал с тем же сервером MySQL при использовании ASP. NET (. NET Framework). Я пробовал соединители Pomelo и MySQL .Data.EntityFrameworkCore, а также при попытке выполнить аналогичную операцию с использованием ADO. NET API.

Позже я столкнулся с этой проблемой Pomelo , где они выглядят чтобы решить ту же проблему, поэтому в «MyDbContext» я добавил:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseMySql(
        ConnectionStringManager.Instance.ConnectionString, 
        mySqlOptionsAction => mySqlOptionsAction.ServerVersion(new Version(5, 7, 19), ServerType.MySql));
}

Это также не помогло. Кажется, что другие функции ядра EF работают нормально и позволяют читать и записывать в базу данных.

...