我有一个系统,客户想要修改当前模型,以便每次用户进行更改时,管理员必须在写入数据库之前接受更改。阅读实体预期的SQL查询?
我正在考虑快速修复这通过覆盖SaveChanges并在ObjectStateManager中获取每个对象,并将其预期的sql代码添加到一个limbo表中,这将保留inteled sql查询直到管理员接受它(然后运行它)。
我知道你可以在数据库查询上使用ToTraceString(),但是你能以某种方式从ObjectStateManager中取出对象上的预期sql查询吗?
正想着这样的事情:
var modified = DB.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Modified);
foreach (var mod in modified)
{
//Insert the query to the limbo table
tblPendingChanges change = new tblPendingChanges();
//Code omitted
change.sql = mod.Query;
//Code omitted
DB.tblPendingChanges.AddObject(change);
mod.Delete();
}
DB.SaveChanges();
如何为每个实体添加'IsApproved'标志....如果用户编辑实体时将其设置为false;并可能阻止进一步的编辑,直到管理员批准... –
嗯,以及会导致一些问题,因为用户可以添加地址/人等等他们的个人资料是关系。并能够首先更改名称或电子邮件,保存,然后再点别的。 – Anders
有趣的是:我没有看到原始问题中的要求...... –