我想我应该提一下,我正在努力让Entity Framework \ SQL服务器做一些我以前从Rails那里得到的东西。我真的只想知道自动created_at&的'最佳'方式。我在数据库中插入/更新的记录的updated_at列值。
现在我已经迷上了 ObjectContext.SavingChanges 事件,事情进展顺利。在我编写并测试了我的代码之后,我意识到可能有更好或更快的方法来执行此操作。
答案 0 :(得分:9)
一种方法是使用insert / update触发器将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
触发方法的一个优点是时间/日期将始终在同一时区。另一个优点是,如果有人在您的应用程序之外修改数据库记录,那么这些字段仍会更新。