【问题标题】:Sql Server (Entity Framework): created_at , updated_at ColumnsSql Server(实体框架): created_at , updated_at 列
【发布时间】:2010-10-05 17:10:45
【问题描述】:
我想我应该提到我正在尝试让 Entity Framework\SQL 服务器做一些我习惯于从 Rails 来的事情。我真的只是想知道为我在数据库中插入/更新的记录自动创建 created_at 和 updated_at 列值的“最佳”方式。
现在我已经加入了 ObjectContext.SavingChanges 事件,并且一切正常。然而,在我编写并测试了我的代码之后,我意识到可能有更好或更快的方法来做到这一点。
【问题讨论】:
标签:
sql-server
ruby-on-rails
entity-framework
【解决方案1】:
一种方法是使用插入/更新触发器将 created_at 和 updated_at 列设置为当前时间。
插入触发器看起来像这样:
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
触发方法的一个优点是时间/日期将始终位于同一时区。另一个优点是,如果有人在您的应用程序之外修改了数据库记录,这些字段仍然会更新。