Как настроить последовательность значений в существующей таблице? - PullRequest
1 голос
/ 01 апреля 2019

У меня есть таблица, которая служит очередью для внешнего процесса.Приложение должно разрешить изменение порядка очереди.Я создаю основное приложение asp.net, которое использует EF Core для взаимодействия с базой данных sql.Я использую код первый подход.Я добавил поле с именем QueueOrder.Я рассмотрел различные подходы, и, похоже, ничего не работает для этого варианта использования.

Один из подходов состоит в том, чтобы по умолчанию поле QueueOrder совпадало с полем Id.Идентификатор представляет собой целочисленную последовательность, которая увеличивается на 1 для каждой вставленной строки, поэтому она должна служить точной отправной точкой для порядка очередей.Затем, когда пользователь меняет порядок, я могу обновить это поле, поменяв местами значения QueueOrder.

Какой лучший способ добиться этого с помощью Entity Framework Code First?Я прочитал документы «Значения по умолчанию», «Сгенерированные значения», «Альтернативные ключи» и «Последовательности», и, похоже, ничего не подходит для моего варианта использования.EF не позволит мне добавить последовательность, потому что таблица уже существует.Я пытался использовать значение по умолчанию, но вы не можете использовать имена столбцов в этом.Вы можете использовать только константы и константные выражения.

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

modelBuilder.Entity<JobQueue>(b =>
{
    b.Property(j => j.QueueOrder)
        .HasDefaultValueSql("Id"); //This fails
});

Есть ли в коде первый поддерживаемый подход к этому?

...