2011-06-20 49 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