實體框架:設置更新時間戳

entity-framework

我們所有的數據庫表都有UpdateUserID和UpdateTS。如果我的實體有變化,我想要這套。有沒有辦法可以有條件地在現場進行此更新?

如果我在代碼中手動設置UpdateTS,那麼它將說明我的實體已更改並將始終更新該對象。

一般承認的答案

您應該能夠處理SavingChanges事件( 此處示例 )並執行@sander概述的邏輯


熱門答案

我在調用context.SaveChanges()之前調用此擴展方法:

public static void SetLastModified(this ObjectContext context, DateTime dateTime)
{
    DateTime now = DateTime.UtcNow;
    foreach (ObjectStateEntry entry in context.ObjectStateManager.GetObjectStateEntries(EntityState.Modified))
    {
        if (!entry.IsRelationship)
        {
            IHasLastModified lastModified = entry.Entity as IHasLastModified;
            if (lastModified != null)
                lastModified.LastModified = now;
        }
    }
}

我可以輕鬆地調用此代碼,因為我將ObjectContext包裝在存儲庫類中。如果你正在使用它,你可以掛鉤ObjectContext.SavingChanges事件來做類似的事情。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因