EF Core 2.2.2 - Ошибка обновления базы данных, MySQL - PullRequest
0 голосов
/ 23 февраля 2019

В настоящее время у меня установлена ​​и работает EF Core 2.2.2 в моем проекте .NET Core Web API.Я использую Pomelo.EntityFrameworkCore.MySql в качестве поставщика MySQL для EF Core.Я могу успешно создать новую миграцию для своей базы данных, но как только я запускаю Update-Database, я получаю следующую ошибку:

У вас есть ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с '2019-02-23 14: 44: 41.445486', 'Concentrates', '2019-02-23 14: 44: 41.445486');

Что странно, поскольку я уже несколько недель использую эту миграцию и довольно часто запускаю Update-Database, когда я отбрасываю базу данных во время разработки, а затем воссоздаю ее.У меня есть следующий код для создания моих данных, которые просеиваются, что вызывает ошибку:

//Seed categories
string[] categories = { "Concentrates", "Food", "Specials & combos", "Clones", "Seeds" };
var catCount = 1;

foreach (var category in categories)
{
    modelBuilder.Entity<Category>().HasData(new Category
    {
        Id = catCount,
        Name = category,
        CreatedAt = DateTime.Now,
        UpdatedAt = DateTime.Now
    });

    catCount++;
}

Выше выполняется в следующем методе:

protected override void OnModelCreating(ModelBuilder modelBuilder)

Модель длямои категории определены следующим образом:

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace DataAccessLayer.Database.Store
{
    public class Category : BaseEntity
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public long Id { get; set; }
        public string Name { get; set; }
    }
}

с BaseEntity, определенным следующим образом:

using System;

namespace DataAccessLayer.Database
{
    public abstract class BaseEntity
    {
        public DateTime? CreatedAt { get; set; }
        public DateTime? UpdatedAt { get; set; }
    }
}

Странно то, что сгенерированный код, который я нахожу в консолиЯ могу выполнить в моей базе данных инструмента успешно без ошибок.Он генерирует следующий код SQL в консоли, который я могу увидеть и выполнить вручную без ошибок:

Failed executing DbCommand (277ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
INSERT INTO `Categories` (`Id`, `CreatedAt`, `Name`, `UpdatedAt`)
VALUES (1, '2019-02-23 14:44:41.445486', 'Concentrates', '2019-02-23 14:44:41.445486');
INSERT INTO `Categories` (`Id`, `CreatedAt`, `Name`, `UpdatedAt`)
VALUES (2, '2019-02-23 14:44:41.445485', 'Food', '2019-02-23 14:44:41.445485');
INSERT INTO `Categories` (`Id`, `CreatedAt`, `Name`, `UpdatedAt`)
VALUES (3, '2019-02-23 14:44:41.445484', 'Specials & combos', '2019-02-23 14:44:41.445484');
INSERT INTO `Categories` (`Id`, `CreatedAt`, `Name`, `UpdatedAt`)
VALUES (4, '2019-02-23 14:44:41.445483', 'Clones', '2019-02-23 14:44:41.445483');
INSERT INTO `Categories` (`Id`, `CreatedAt`, `Name`, `UpdatedAt`)
VALUES (5, '2019-02-23 14:44:41.445467', 'Seeds', '2019-02-23 14:44:41.445468');

Вот инструкция CREATE для таблицы Categories, которая вызывает проблему:

CREATE TABLE `Categories` (
  `Id` bigint(20) NOT NULL AUTO_INCREMENT,
  `CreatedAt` datetime(6) DEFAULT NULL,
  `UpdatedAt` datetime(6) DEFAULT NULL,
  `Name` longtext,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8

Кто-нибудь, возможно, имеет представление, почему я получаю сообщение об ошибке при попытке запустить Update-Database, но могу успешно выполнить SQL вручную?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...