Sql Server (Entity Framework): столбцы создаются, обновляются - PullRequest
4 голосов
/ 05 февраля 2009

Думаю, мне следует упомянуть, что я пытаюсь заставить Entity Framework \ SQL server делать то, к чему я привык из Rails. Я действительно просто хочу знать «лучший» способ иметь автоматические значения столбцов create_at & updated_at для записей, которые я вставляю / обновляю в базе данных.

Сейчас я подключился к событию ObjectContext.SavingChanges , и все работает хорошо. Однако после того, как я написал и протестировал свой код, я понял, что может быть лучший или более быстрый способ сделать это.

1 Ответ

9 голосов
/ 05 февраля 2009

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

Триггер Insert будет выглядеть примерно так:

CREATE TRIGGER [dbo].[inserted_myTable] ON [dbo].[myTable] AFTER INSERT
AS 
BEGIN
    SET NOCOUNT ON;
    UPDATE [dbo].[myTable] Set AdmitDateTime = GetDate() where pkid in (SELECT pkid FROM Inserted)
END


Триггер обновления будет выглядеть примерно так:

CREATE TRIGGER [dbo].[updated_myTable] ON  [dbo].[myTable] AFTER UPDATE
AS 
BEGIN
    SET NOCOUNT ON;
    UPDATE [dbo].[myTable] Set AdmitDateTime = GetDate() where pkid in (SELECT pkid FROM Inserted)
END


Одним из преимуществ триггерного подхода является то, что время / дата всегда будут в одном часовом поясе. Другое преимущество состоит в том, что если кто-то изменяет запись базы данных вне вашего приложения, поля все равно обновляются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...