Entity Framework - Миграции - Code First - Seeding per Migration

Я изучаю Миграции, чтобы очистить наши процессы развертывания. Чем меньше ручного вмешательства требуется для продвижения производства, тем лучше.

Я столкнулся с 3 основными препятствиями в системе миграции. Они - показные пробки, если я не могу придумать чистый путь вокруг них.

1. Как добавить данные Seed для каждой миграции:

Я выполняю командудобавить миграцию» который создает новый файл миграции с функциями Up и Down. Теперь я хочу автоматически вносить изменения в данные с изменениями вверх и вниз. Я неНе нужно добавлять данные Seed в метод Configuration.Seed, так как он работает для всех миграций, которые заканчиваются всевозможными проблемами дублирования.

2. Если вышесказанное невозможно, как избежать дублирования?

У меня есть перечисление, которое я перебираю, чтобы добавить значения в базу данных.

foreach(var enumValue in Enum.GetValues(typeof(Access.Level)))
{
    context.Access.AddOrUpdate(
        new Access { AccessId = ((int)enumValue), Name = enumValue.ToString() }
    );
}
context.SaveChanges();

Несмотря на то, что я использую AddOrUpdate, я все еще получаю дубликаты в базе данных. Приведенный выше код подводит меня к моей третьей и последней проблеме:

3. Как я могу посеять первичные ключи?

Мой перечислимый код выше:

public class Access
{
    public enum Level
    {
        None = 10,
        Read = 20,
        ReadWrite = 30
    }
    public int AccessId { get; set; }
    public string Name { get; set; }
}

Я указываю значения, которые я хочу, в качестве моего первичного ключа, но Entity Framework, кажется, игнорирует его. Они все еще заканчивают тем, что были 1,2,3. Как мне получить это 10,20,30?

Являются ли эти ограничения EF на данный момент или они намеренными ограничениями для предотвращения какой-либо другой катастрофы, которую я не вижу?

Ответы на вопрос(4)

Ваш ответ на вопрос