Как выполнить миграцию в диспетчере пакетов? - PullRequest
0 голосов
/ 12 мая 2018

Я установил FluentMigration для управления моими файлами SQL.

В управлении пакетами я выполняю следующие команды:

PM> dotnet add package FluentMigrator
PM> dotnet add package FluentMigrator.Runner

Миграция

 [Migration(201805041513)]
    public class _201805041513_CriacaoTabelaPessoa : ForwardOnlyMigration
    {
        public override void Up()
        {
            Create.Table("Pessoa")
                .InSchema("angularCore")
                .WithColumn("Id").AsInt32().Identity()
                .WithColumn("Nome").AsString(80)
                .WithColumn("SobreNome").AsString(50)
                .WithColumn("Email").AsString(50)
                .WithColumn("IdTpoPessoa").AsInt16()
                .WithColumn("IdEndereco").AsInt16();


        }
    }

Вне процесса (для некоторых корпоративных требований)

PM> dotnet tool install -g FluentMigrator.DotNet.Cli

Ошибка:

Не найден исполняемый файл, соответствующий команде "dotnet-tool"

Документация

Редактировать

Запустить в

PM> dotnet tool install -g FluentMigrator.DotNet.Cli
PM> dotnet fm migrate -p sqlite -c "Data Source=test.db" -a ".\bin\Debug\netcoreapp2.1\test.dll"

Генерировать teste.db

enter image description here

В старых версиях вы запускаете миграции непосредственно в базе данных, я не понял, как обновить мою базу данных, т.е. создать человека таблица через сгенерированный файл test.db?

1 Ответ

0 голосов
/ 16 мая 2018

Я смог заставить это работать без проблем. Вот что я сделал:

Сначала я установил .NET Core 2.1-Preview 2. После установки проверил версию:

dotnet --version
2.1.300-preview2-008533

Я тогда создал проект

mkdir testfm
cd testfm
dotnet new console

Установлены пакеты nuget

dotnet add package FluentMigrator
dotnet add package FluentMigrator.Runner
dotnet add package FluentMigrator.Runner.SQLite
dotnet add package Microsoft.Data.Sqlite

Установлен инструмент CLI

dotnet tool install -g FluentMigrator.DotNet.Cli

Создан класс миграции с именем Migration1.cs

     using FluentMigrator;

namespace test
{
    [Migration(201805041513)]
    public class _201805041513_CriacaoTabelaPessoa : ForwardOnlyMigration
    {
        public override void Up()
        {
            Create.Table("Pessoa")
                .InSchema("angularCore")
                .WithColumn("Id").AsInt32().Identity()
                .WithColumn("Nome").AsString(80)
                .WithColumn("SobreNome").AsString(50)
                .WithColumn("Email").AsString(50)
                .WithColumn("IdTpoPessoa").AsInt16()
                .WithColumn("IdEndereco").AsInt16();


        }
    }
}

Скомпилировал проект

dotnet build

Запустил миграцию из корневого каталога проекта

dotnet fm migrate -p sqlite -c "Источник данных = test.db" -a "\ Bin \ Debug \ netcoreapp2.1 \ test.dll"

Затем я получил следующие сообщения. Sucess FM Run

Затем я подтвердил, что таблица была создана, просмотрев SqlLite DB

SqlLite DB View

Чтобы запустить эту же миграцию на Sql Server 2016, вы должны выполнить:

dotnet fm migrate -p SqlServer2016 -c "Сервер = SQLSERVERINSTANCE; UID = testfm; PWD = тест; Trusted_Connection = да, база = FluentMigrator" -a ". \ bin \ Debug \ netcoreapp2.1 \ test.dll"

...