2009-02-05 83 views
4

我想我應該提到我試圖讓Entity Framework \ SQL服務器做一些我曾經習慣於來自Rails的東西。我真的只想知道在數據庫中插入/更新記錄的自動created_at & updated_at列值的'最佳'方法。Sql Server(實體框架):created_at,updated_at列

現在我已經迷上了ObjectContext.SavingChanges事件和事情運作良好。在我編寫並測試了我的代碼之後,我意識到可能有更好或更快的方法來執行此操作。

回答

9

一種方法是使用插入/更新觸發器將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 
觸發方式


一個優點是時間/日期將始終在同一時區。另一個優點是,如果有人在您的應用程序之外修改數據庫記錄,則這些字段仍會更新。

+0

+1,謝謝。什麼是NOCOUNT? – Greg 2010-02-17 11:37:45