Итак, я использую Entity Framework, и у нас есть модальная таблица TPM_PROJECTVERSIONNOTES. Эта таблица имеет столбец с именем NOTEID, который является числом. Прямо сейчас, когда мы создаем новую строку, мы получаем следующий доступный номер с этим кодом:
note.NOTEID = (from n in context.TPM_PROJECTVERSIONNOTES
orderby n.NOTEID descending
select n.NOTEID).Max() + 1;
Мне это кажется невероятно взволнованным (я имею в виду, что вам нужно выполнить целый SQL-запрос, чтобы получить следующее значение). Плюс, это невероятно опасно; это не потокобезопасно и не безопасно для транзакций. Я уже нашел 9 экземпляров в БД, которые имеют одинаковый NOTEID! Хорошо, что никто даже не подумал наложить на эту колонку УНИКАЛЬНОЕ ограничение ... вздох.
Так или иначе, я добавил новую последовательность в базу данных:
CREATE SEQUENCE TPM_PROJECTVERSIONNOTES_SEQ START WITH 732 INCREMENT BY 1;
Теперь мой вопрос:
Как мне указать платформе Entity использовать TPM_PROJECTVERSIONNOTES_SEQ.nextval при вставке строки в эту таблицу? По сути, я просто не хочу указывать NOTEID вообще, и я хочу, чтобы инфраструктура позаботилась об этом за меня. Было предложено использовать триггер, но я думаю, что это немного глупо, и, скорее всего, придется использовать платформу Entity, чтобы сначала создать правильный SQL. Для этого я использую Oracle 11g.