Использование Entity Framework 6 и SQL Server, я получаю следующее сообщение об ошибке, когда EF делает миграционную вещь:Entity Framework Code-First Migration завершает работу с SQL Server
Невозможно обновить базу данных в соответствии с текущей моделью, потому что есть ожидающие изменения, и автоматическая миграция отключена. Либо записывайте ожидающие изменения модели в миграцию на основе кода, либо разрешайте автоматическую миграцию. Установите для параметра
DbMigrationsConfiguration.AutomaticMigrationsEnabled
значение true, чтобы включить автоматическую миграцию.
Все работает отлично с MySQL.
Изменений не было. Запуск других "Add-миграция" результаты в пустых вверх()/вниз() методы:
public partial class Two : DbMigration
{
public override void Up()
{
}
public override void Down()
{
}
}
DbMigrationsConfiguration
класса:
internal sealed class Configuration : DbMigrationsConfiguration<MyDBContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
SetSqlGenerator("System.Data.SqlClient", new SqlServerMigrationSqlGenerator());
}
protected override void Seed(MyDBContext context)
{
...
}
}
DbContext.OnModelCreating
:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDBContext, Configuration>());
...
}
Кроме того, исследующий __MigrationHistory
кажется, что все в порядке.
Что я делаю неправильно?
Обновление: Включение автоматических миграций временно, чтобы увидеть, какие изменения он внесет, он изменяет все значения точности/шкалы времени столбца от 16/7 до 8/0. Я не понимаю, почему он создает их с одной точностью, а затем хочет их иметь другую позже, хотя ...
Update 2, запросы:
Вот те запросы, которые создают соответствующие таблицы :
CREATE TABLE [dbo].[Instruments] (
[ID] [int] NOT NULL IDENTITY,
[Symbol] [nvarchar](255),
[UnderlyingSymbol] [nvarchar](255),
[Name] [nvarchar](255),
[PrimaryExchangeID] [int],
[ExchangeID] [int],
[Type] [int] NOT NULL,
[Multiplier] [int],
[Expiration] [datetime],
[OptionType] [int],
[Strike] [decimal](16, 8),
[Currency] [nvarchar](25),
[MinTick] [decimal](16, 8),
[Industry] [nvarchar](255),
[Category] [nvarchar](255),
[Subcategory] [nvarchar](255),
[IsContinuousFuture] [bit] NOT NULL,
[ValidExchanges] [varchar](max),
[DatasourceID] [int] NOT NULL,
[ContinuousFutureID] [int],
[SessionsSource] [int] NOT NULL,
[SessionTemplateID] [int],
[DatasourceSymbol] [nvarchar](255),
CONSTRAINT [PK_dbo.Instruments] PRIMARY KEY ([ID])
)
CREATE TABLE [dbo].[exchangesessions] (
[ID] [int] NOT NULL IDENTITY,
[OpeningTime] [time](3) NOT NULL,
[ClosingTime] [time](3) NOT NULL,
[ExchangeID] [int] NOT NULL,
[IsSessionEnd] [bit] NOT NULL,
[OpeningDay] [int] NOT NULL,
[ClosingDay] [int] NOT NULL,
CONSTRAINT [PK_dbo.exchangesessions] PRIMARY KEY ([ID])
)
А потом вот запросы, сделанные с помощью автоматической миграции:
ALTER TABLE [dbo].[Instruments] ALTER COLUMN [Expiration] [datetime]
ALTER TABLE [dbo].[exchangesessions] ALTER COLUMN [OpeningTime] [time](3) NOT NULL
ALTER TABLE [dbo].[exchangesessions] ALTER COLUMN [ClosingTime] [time](3) NOT NULL
Установили ли вы автоматическую миграцию? –
Как вы можете видеть, AutomaticMigrationsEnabled = false; Я не хочу использовать автоматическую миграцию. –
Итак, существует разница между сигнатурой между кодом и базой данных. Как вы обновляете базу данных? –