В настоящее время у меня установлена и работает 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 вручную?