Ядро EF не создает таблицы по методу миграции - PullRequest
0 голосов
/ 20 мая 2018

Эй, я только начал использовать ядро ​​EF, и все работает отлично.Я вызываю метод context.Database.Migrate(), и он создает базу данных.Но даже если у моего объекта контекста есть DBSet<T>, он не создает никаких таблиц, кроме истории миграции.

Может кто-нибудь помочь мне с этой проблемой?

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Я сделал следующее и работаю:

  1. Стереть папку миграции в моем проекте APP.
  2. Стоя на проекте DataAccess, где я объявил постоянство (EF, Dbcontext и т. Д.)2.1 Add-Migration Initial.2.2 Обновление базы данных из консоли.
0 голосов
/ 20 мая 2018

context.Database.Migrate() само по себе не создает миграции .Вместо этого он обрабатывает созданные вами миграции.

Для каждого изменения базы данных вы должны вызывать Add-Migration {sensibleName}.

Ваш класс запуска продолжит вызывать context.Database.Migrate(), который проверит вашу базу данных и обработает любуюожидающие миграции.

Например, после того, как вы создали свою базу данных, общим правилом является вызов Add-Migration Initial.Вызов context.Database.Migrate() один раз проверит, что ваша база данных существует, создайте ее, если нет, проверьте, применяется ли миграция Initial, и примените, если нет.

Если вы затем позвоните Add-Migration SmallChange, то же самое произойдетследующий запуск, подобный следующему:

  1. Существует ли база данных?Да
  2. Применена ли начальная миграция?Да
  3. Была ли применена миграция SmallChange?Нет
  4. Применить миграцию SmallChange

Ваша первая миграция должна выглядеть примерно так:

public partial class Initial : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.CreateTable(
            name: "HelloWorld",
            columns: table => new
            {
                Id = table.Column<int>(nullable: false)
                    .Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
                MyString = table.Column<string>(nullable: true),
            });
    }
}

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

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