记录对LINQ to SQL生成的对象所做的更改

时间:2011-06-20 18:33:09

标签: c# linq-to-sql logging

我很想知道记录对linq创建的对象所做的更改的最佳方法是什么。

我已经四处寻找,这就是我想出的:

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());
    }
}

这真的是记录更改的方法吗?

2 个答案:

答案 0 :(得分:0)

Change TrackingChange Data Capture是可行的方法。 LINQ与它无关。作为一般规则,客户端无法正确跟踪服务器中发生的更改,因为更改可能发生在通过客户端未发生的备用访问中。作为警示,对所有变更进行完整的数据审计很少成功,因为性能税罚款通常过高。

答案 1 :(得分:0)

我四处搜索,我想我会使用DoodleAudit(doddleaudit.codeplex.com)它似乎给了我想要的东西,tnx无论如何都要帮助它!