Как создать новую таблицу в Entity Framwowrk Core для подхода, ориентированного на код - PullRequest
0 голосов
/ 13 июля 2020

Первоначально я начал с кода ниже

public class ShareMyBlogPostContext : DbContext
{
   public ShareMyBlogPostContext(DbContextOptions<ShareMyBlogPostContext> options):base(options)
   {
   }

   public DbSet<User> Users { get; set; }
}

И я выполнил следующие команды для создания таблицы базы данных и миграции:

dotnet ef migrations add InitialDb
dotnet ef database update

Но через некоторое время я понял, что Мне нужна новая сущность, и я обновил свой класс DbContext, как показано ниже:

public class ShareMyBlogPostContext : DbContext
{
   public ShareMyBlogPostContext(DbContextOptions<ShareMyBlogPostContext> options) : base(options)
   { }

   public DbSet<User> Users { get; set; }
   public DbSet<Blog> Blogs { get; set; }
}

Поскольку я только начинал проект и в таблице Users не было много данных, это не так. Для меня большая задача - удалить уже существующую таблицу Users из базы данных и папку Migrations из моего проекта и повторно выполнить указанные выше команды. Таким образом, я смог создать новую таблицу базы данных с именем Blogs.

Но как создать новую таблицу базы данных для вновь добавленного объекта в DbContext без удаления существующих таблиц и миграций? Поскольку такой сценарий будет происходить не каждый раз.

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

EF всегда смотрит внутрь DbContext производного класса (ShareMyBlogPostContext в вашем случае), чтобы обнаружить изменения. Иногда вы не можете добавить отдельный экземпляр DbSet для только что созданного класса, неважно, если вы установите связь между этим вновь созданным классом и одним из классов DbSet, необходимые таблицы появятся сразу после вашего запроса это . Каждая вещь в EF codefirst - полностью управляемая , и ничего не произойдет, если вы не запустите migrations add migrationName (. net команда CLI), чтобы сгенерировать скрипт для текущих изменений. В зависимости от вашей конфигурации перенос может не применяться, если вы не запросите его до database update. Таким образом, у вас может быть несколько миграций. Команда Обновляет схему базы данных на основе последнего снимка миграции .

Работа с изменениями базы данных является важной частью любого проекта. Поэтому, пожалуйста, прочтите документ EF раньше.

0 голосов
/ 13 июля 2020

привет, пожалуйста, введите эту команду

dotnet ef migrations add AddBlogs
dotnet ef database update

для получения дополнительной информации посетите эту страницу

также, если вы хотите сохранить свою таблицу, вы должны изменить migration.cs файлы, чтобы добавить свои таблицы и поля, и просто запустите эту команду

dotnet ef database update
...