Являются ли хранимые процедуры единственным способом надежно установить поле даты и времени с временем модификации сервера? - PullRequest
0 голосов
/ 23 марта 2011

Вот требования:

  • У нас есть таблица со столбцом lastModifiedOn.
  • Мы хотим, чтобы этот столбец действительно надежно отражал (utc) время, когда поле последний раз обновлялось в базе данных.
  • Мы хотим, чтобы это продолжалось и при изменении содержимого таблиц с помощью Entity Framework.

Сейчас мы делаем это с помощью элемента ModificationFunctionMapping/UpdateFunction в MSL и хранимой процедуры, определенной в файле SSDL.

Есть ли другой способ достижения того же эффекта без использования хранимой процедуры?

EDIT: В конце концов, я не был достаточно ясен.

Когда я сказал, что «хранимая процедура [была] определена в файле SSDL», я хотел сказать, что имя хранимой процедуры было определено в файле SSDL - но проблема заключалась в том, что мне пришлось развертывать хранимые процедуры с этими имена в базе данных, которые могут создать проблемы в случае нескольких моделей EF. Теперь, когда я понял использование элемента <CommandText> в элементе SSDL <Function>, я смог поместить пользовательский SQL вместе с остальной частью модели Entity Framework - что решило мою проблему.

Ответы [ 2 ]

0 голосов
/ 23 марта 2011

Я согласен с Filip, в нашем приложении у нас также есть столбец для LastModifiedOn, и мы создали триггер для таблиц, который обновляет этот столбец с меткой текущего времени при каждом обновлении строки в таблице.

The Thingесли вам потребуется создать два триггера в таблице, 1. Обновить триггер: это обновит столбец LastModifiedOn с текущей меткой времени при каждом обновлении строки.2. Вставить триггер: вставляет текущую метку времени в столбец LastModifiedOn при создании строки в таблице.

0 голосов
/ 23 марта 2011

Вы можете переопределить столбец lastModifiedOn, добавив триггер current_timestamp.Я предполагаю, что сервер базы данных является сервером Sql.

...