2010-10-04 20 views
0

是否可以將Linq to SQL配置爲將列更新爲getutcdate()(即從數據庫服務器而不是Web服務器獲取日期),或者是我唯一的觸發器選項?配置DateTime列以從db時間更新

我已經嘗試在模型上設置Time Stamp屬性,但這並沒有幫助。

有什麼想法?

回答

1

我認爲你需要使用觸發器來更新時間。我處理它的方式是將LINQ設計器中的屬性標記爲只讀和服務器生成的。我在更新時設置了觸發器來修改每次更新的列。對於創建日期,我執行相同的只讀/服務器生成,並使用getdate()作爲列默認值。將列設置爲生成服務器非常重要,因爲您不希望它將數據發送回可能不正確的列 - 可以是NULL,舊日期或DateTime.Minumum,具體取決於類型和初始設置。

另一種替代方法是在代碼中處理它,並使用PropertyChanged事件處理程序爲類上的每個列更新列。我認爲觸發路線更容易。請注意,這將使用Web服務器時間,而不是數據庫時間 - 但它們應該同步(如果您使用安全連接,它們必須是同步的)。你可以想象得到一個選擇來獲得數據庫服務器的時間,但是你往往會在往返時間之外。正如我所說,我認爲觸發更容易。

+0

我有一種感覺需要觸發器。我最終使用了'INSTEAD OF'觸發器來減少事務日誌中的命中,並且我完全從模型中刪除了屬性(它不是應用程序所要求的)。 – 2010-10-04 16:23:31