Моя таблица Sections
(SQL Server) имеет ID
в качестве первичного ключа (int, identity)
и SortIndex
column (int) для целей сортировки.
В базе данных есть триггер, который устанавливает SortIndex := ID
в каждом INSERT
. Очевидно, что я хочу изменить индекс сортировки позже, заменив значения для двух строк.
Я получаю доступ к данным с помощью Entity Framework, все с веб-приложением MVC3.
Проблема заключается в том, что Entity Framework не обновляет значение SortIndex
после того, как я вставляю новый объект в таблицу. Он также кэширует все данные, поэтому следующий вызов для получения всех объектов из этой таблицы также даст неправильное значение SortIndex
для этого объекта.
Я попытался изменить StoreGeneratedPattern
для этого столбца в EDMX
. Это кажется отличным и элегантным, но не решает проблему.
Если я установлен в Identity
, это заставляет EF правильно обновлять значение, но оно становится только для чтения (исключение возникает при попытке изменить). Установка его в Computed
аналогична, но вместо генерируемого исключения значения просто не записываются в БД.
Я могу воссоздать объект EF каждый раз, если мне нужно использовать его после вставки объекта, просто выполнив:
DatabaseEntities db = new DatabaseEntities()
Но это кажется уродливым обходным путем для меня.
Какое решение этой проблемы?
Очевидно, что что-то, что не требует от меня каких-либо действий после каждого INSERT
(и рисковать тем, что оно забыто и незаметно) является предпочтительным.