2011-06-20 47 views
0

我在想什麼是記錄對由linq創建的對象所做更改的最佳方式。對LINQ to SQL生成對象所做的日誌更改

找遍四周,這就是我想出了:

using (testDBDataContext db = new testDBDataContext()) 
{ 
    Sometable table = db.Sometables.Single(x => x.id == 1); 

    table.Something = txtTextboxToChangeValue.Text; 

    Sometable tableBeforeChanges = db.Sometables.GetOriginalEntityState(table); 

    foreach (System.Data.Linq.ModifiedMemberInfo item in db.Sometables.GetModifiedMembers(table)) 
    { 
     // Obviously writing to debug is not what i would like to do 
     System.Diagnostics.Debug.WriteLine("Old value: " + item.OriginalValue.ToString()); 
     System.Diagnostics.Debug.WriteLine("New value: " + item.CurrentValue.ToString()); 
    } 
} 

這真的是去記錄改變的方式嗎?

+0

什麼樣的LINQ? LINQ to XML? –

+0

LINQ to SQL就是我使用的 – Andreas

+0

然後,在將來,你應該_say so_ –

回答

0

我周圍搜索,我想我會使用DoodleAudit(doddleaudit.codeplex.com)它似乎給我我想要的,tnx幫助反正!

0

Change TrackingChange Data Capture是要走的路。 LINQ與它無關。作爲一般規則,客戶端無法正確地跟蹤服務器中發生的更改,因爲更改可能發生在不通過客戶端進行的備用訪問中。作爲警示,對所有變更設置完整的數據審覈很少成功,因爲績效稅懲罰通常太高。

+0

@RemusRusanu哇......對於初學者來說,我覺得這非常複雜......任何讓這個更簡單的方法? – Andreas

+0

你需要澄清你想記錄什麼以及爲什麼。明確說明你的要求。 –

+0

那麼該對象是一個客戶對象,有很多客戶信息,如電話,電子郵件,萬維網。在我的公司,所有員工都可以登錄並查看/編輯客戶的數據。現在我想記錄員工做了哪些更改,以便我可以顯示最近10次更改,如下所示:「客戶名稱從A更改爲B 2011-06-20」 – Andreas