Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Результат покажет, что миграция
Initial
Console.Writeline()
CreateDbContext()
Build started...
Build succeeded.
server=.,5433;Database=AutoLot;User Id=sa;Password=P@ssw0rd;
20201231203939_Initial (Pending)
Применение миграции
Самый простой способ применения миграции к базе данных предусматривает ее удаление и повторное создание. Если вас он устраивает, тогда можете ввести приведенные ниже команды и перейти к чтению следующего раздела:
dotnet ef database drop -f
dotnet ef database update Initial -c AutoLot.Dal.EfStructures.ApplicationDbContext
Если вариант с удалением и повторным созданием базы данных не подходит (скажем, в случае базы данных Azure SQL), то инфраструктуре EF Core необходимо обеспечить уверенность о том, что миграция была применена. К счастью, с помощью EF Core выполнить всю работу легко. Начните с создания из миграции сценария SQL, используя следующую команду:
dotnet ef migrations script --idempotent -o FirstMigration.sql
Важными частями сценария являются те, которые создают таблицу
__EFMigrationsHistory
IF OBJECT_ID(N'[__EFMigrationsHistory]') IS NULL
BEGIN
CREATE TABLE [__EFMigrationsHistory] (
[MigrationId] nvarchar(150) NOT NULL,
[ProductVersion] nvarchar(32) NOT NULL,
CONSTRAINT [PK___EFMigrationsHistory] PRIMARY KEY ([MigrationId])
);
END;
GO
INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion])
VALUES (N'20201231203939_Initial', N'5.0.1');
Если вы теперь запустите команду
list
Initial
Обновление модели
В этом разделе все текущие сущности обновляются до своих финальных версий, к тому же добавляется сущность регистрации в журнале. Обратите внимание, что ваши проекты не смогут быть скомпилированы вплоть до завершения данного раздела.
Сущности
В каталоге
Entities
AutoLot.Models
Изменения, которые вы внесете в сущностные классы, включают добавление базового класса, создание принадлежащего сущностного класса
Person
Класс BaseEntity
Класс
BaseEntity
Id
TimeStamp
Base
Entities
AutoLot.Models
BaseEntity.cs
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace AutoLot.Models.Entities.Base
{
public abstract class BaseEntity
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[TimeStamp]
public byte[]? TimeStamp { get; set; }
}
}
Все сущности, шаблоны которых созданы из базы данных
AutoLot
BaseEntity
Принадлежащий сущностный класс Person
Сущности
Customer
CreditRisk
FirstName
LastName
Создайте в каталоге
Entities
AutoLot.Models
Owned
Person.cs
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;