Базовое ядро ​​Entity Framework, update-database не учитывает атрибуты - PullRequest
1 голос
/ 11 ноября 2019

У меня есть объект PersonEntity с некоторым атрибутом

    public class PersonEntity
    {

        [Required]
        [MaxLength(50)]
        public string FirstName { get; set; }

        [Required]
        [MaxLength(50)]
        public string LastName { get; set; }

        [Key]
        public int Id{ get; set; }
    }

, когда я выполняю update-database -verbose, база данных и таблица генерируются, но без учета атрибутов. В базе данных есть varchar (MAX) для FirstName и LastName, и он может быть обнуляемым.

Я пытался использовать свободный API (я удалил атрибуты)

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<PersonEntity>()
        .ToTable(nameof(this.Customer))
        .HasKey(e => e.Id);

    modelBuilder.Entity<PersonEntity>()
        .Property(t => t.LastName)
        .IsRequired()
        .HasMaxLength(50);

    modelBuilder.Entity<PersonEntity>()
        .Property(t => t.FirstName)
        .IsRequired()
        .HasMaxLength(50);

    base.OnModelCreating(modelBuilder);
}

, но тот же результат.

Есть идеи, почему?

Спасибо,

Ответы [ 2 ]

3 голосов
/ 11 ноября 2019

Update-Database : выполняет последний файл миграции, созданный командой Add-Migration, и применяет изменения к схеме базы данных

. Когда вы меняете классы домена, выполняйте Add-Migration спараметр name, чтобы создать новый файл миграции, а затем выполнить команду Update-Database, чтобы применить изменения к схеме базы данных. Ref

0 голосов
/ 11 ноября 2019

Каждый раз, когда вы изменяете сущности, вам нужно снова создавать новые миграции, запуская Add-Migration, чтобы затем применить их перед выполнением команды update-database.

Для получения дополнительной информации просто обратитесь к этой официальной документации Миграции :

https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/?tabs=vs#customize-migration-code

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