我很想知道记录对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());
}
}
这真的是记录更改的方法吗?
答案 0 :(得分:0)
Change Tracking或Change Data Capture是可行的方法。 LINQ与它无关。作为一般规则,客户端无法正确跟踪服务器中发生的更改,因为更改可能发生在通过客户端未发生的备用访问中。作为警示,对所有变更进行完整的数据审计很少成功,因为性能税罚款通常过高。
答案 1 :(得分:0)
我四处搜索,我想我会使用DoodleAudit(doddleaudit.codeplex.com)它似乎给了我想要的东西,tnx无论如何都要帮助它!