2019獨角獸企業重金招聘Python工程師標準>>>
在發布完:框架設計:實現數據的按需更新與插入的改進?之后:
?
有網友表示不理解,于是這里給出一篇簡單的說明對比,表示下改進后好處。
?
一:場景一:循環5次,同樣也是重復提交的問題
?
using (MAction action = new MAction(TableNames.Blog_User))
??????????? {
??????????????? for (int i = 0; i < 5; i++)
??????????????? {
??????????????????? action.Set(Users.ID, 18);
??????????????????? action.Set(Users.UserName, "cyq1162");
??????????????????? action.Update();
??????????????? }
??????????????????? Response.Write(action.DebugInfo);//輸出調試信息
??????????? }
??????????? {
??????????????? for (int i = 0; i < 5; i++)
??????????????? {
??????????????????? action.Set(Users.ID, 18);
??????????????????? action.Set(Users.UserName, "cyq1162");
??????????????????? action.Update();
??????????????? }
??????????????????? Response.Write(action.DebugInfo);//輸出調試信息
??????????? }
?
1:舊模式生成的SQL:
說明:
我們很直觀的看到它重復的更新了5次。
?
2:改進后生成的SQL:
說明:
改進后,只是更新一次,其它四次并沒有操作數據庫。
?
二:場景二:模塊緩存場景,其實和第一場景相似
?
MDataRow userInfo=null;//模擬行數據緩存
??????????? using (MAction action = new MAction(TableNames.Blog_User))
??????????? {
??????????????? if (action.Fill(18))
??????????????? {
??????????????????? userInfo = action.Data;
??????????????? }
??????????? }
??????????? using (MAction action = new MAction(userInfo))//從緩存加載
??????????? {
??????????????? action.Set(Users.UserName, "cyq1162");
??????????????? action.Update();
??????????????? Response.Write(action.DebugInfo);
??????????? }
??????????? using (MAction action = new MAction(TableNames.Blog_User))
??????????? {
??????????????? if (action.Fill(18))
??????????????? {
??????????????????? userInfo = action.Data;
??????????????? }
??????????? }
??????????? using (MAction action = new MAction(userInfo))//從緩存加載
??????????? {
??????????????? action.Set(Users.UserName, "cyq1162");
??????????????? action.Update();
??????????????? Response.Write(action.DebugInfo);
??????????? }
?
1:舊模式生成的SQL:

說明:
無論存不存在緩存,更新同樣被觸發。
?
2:改進后生成的SQL:
說明:
有緩存數據時,相同的數據更新,則不會再被更新。
?
三:結論好處
?
實質性的減少數據庫操作,從數據框架底層有效的防止無效的點擊事件。