我有一個系統,客戶想要修改當前模型,以便每次用戶進行更改時,管理員必須在寫入數據庫之前接受更改。閱讀實體預期的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
有趣的是:我沒有看到原始問題中的要求...... –