Sql Server(entity framework):created_at,updated_at Columns

我想我应该提一下,我正在尝试让Entity Framework \ SQL服务器做一些我以前从Rails那里得到的东西。 我真的只想知道在数据库中插入/更新的记录具有自动created_at和updated_at列值的“最佳”方法。

现在我已经迷上了ObjectContext.SavingChanges事件,事情进展顺利。 在我编写并测试了我的代码之后,我意识到可能有更好或更快的方法来执行此操作。

一种方法是使用插入/更新触发器将created_at和updated_at列设置为当前时间。

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 

Update触发器看起来像这样:

 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 

触发方法的一个优点是时间/日期将始终在同一时区。 另一个优点是,如果有人修改了应用程序之外的数据库记录,则字段仍会更新。

Interesting Posts