EF Core 2.1 первичный ключ данных заполнения - PullRequest
0 голосов
/ 13 сентября 2018

Я только что столкнулся с проблемой, напоминающей ситуацию с курицей и яйцом.

Я пытаюсь заполнить данные в EF 2.1.3. У меня есть класс под названием «Образец».

public class Sample
    {
        public long Id { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public bool IsActive { get; set; }
        public bool IsVisible { get; set; }
    }

У меня есть следующий метод посева:

builder.HasData(
                new Sample {Id=1, IsActive = true, IsVisible = true, Name = "Test 1" },
                new Sample { Id = 2, IsActive = true, IsVisible = true, Name = "Test 2" },
                new Sample { Id = 3, IsActive = true, IsVisible = true, Name = "Test 3" }
                );

Теперь, похоже, сработало нормально, когда я впервые запустил миграцию

Теперь, однако, каждый раз, когда я запускаю команду Add-Migration, я получаю эту ошибку:

The seed entity for entity type 'Sample' cannot be added because another seed entity with the same key value for {'Id'} has already been added. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see the conflicting key values.

Избавление от значений Id из начальных данных - приводит к этой ошибке:

The seed entity for entity type 'Sample' cannot be added because there was no value provided for the required property 'Id'.

1 Ответ

0 голосов
/ 13 сентября 2018

EF ядро ​​требует добавления ключей в pocos, потому что оно должно знать, какой из них является первичным ключом.Вы можете попробовать добавить атрибуты данных, такие как [Key] и [Required], к свойствам вашего класса

Здесь приведено описание атрибутов данных

Вы также некак правило, приходится добавлять ID, если ваша таблица автоматически увеличивается при условии, что вы используете реляционную базу данных

...