EF用編輯資料成功,然后重繪頁面沒有變,跟蹤EF生成的SQL陳述句,在SQL資料是變了的,然后在vs里看回傳的資料確是沒有更改,很郁悶,
洗掉和添加都可以立即更新,就是編輯不行,上代碼讓大俠看看
public int Modify(T model1, params string[] paraName)
{
int iret = -1;
using (DbContext DB = new DBContextFactory().GetDbContext())
{
DB.Set<T>().Attach(model1);
DbEntityEntry entry = DB.Entry<T>(model1);
entry.State = System.Data.Entity.EntityState.Unchanged;
foreach (string proName in paraName)
{
entry.Property(proName).IsModified = true;
}
iret = DB.SaveChanges();
}
}
資料庫已經發生變化了,除非重新運行系統,查詢可以看見,或者是把USING去掉,然后每查詢一次就NEW一次背景關系,更新后查詢沒問題,有沒有更好的解決方案呢,還是我那里錯了
uj5u.com熱心網友回復:
entry.State = System.Data.Entity.EntityState.Unchanged;改成Modified呢
uj5u.com熱心網友回復:
改了,也是一樣,奇了怪啦!uj5u.com熱心網友回復:
你除錯到 iret = DB.SaveChanges();后,iret和model1 都沒有變化?
uj5u.com熱心網友回復:
iret有變化啊,回傳1,執行成功,回傳前端ajax.資料,然后前端在請求一個重繪,查詢,回傳得到的list集合里的model沒有變,SQL跟蹤SQL陳述句沒問題。是不是背景關系沒釋放?和背景關系有關?,查詢我用using后,就能重繪成功,那我的背景關系唯一執行緒,EF新手,有點頭疼。uj5u.com熱心網友回復:
那要看new DBContextFactory().GetDbContext()里面是怎么產生dbcontext的。
每次都用新的應該是沒問題的。
uj5u.com熱心網友回復:
一般來說,每次請求應該生成新的dbuj5u.com熱心網友回復:
嗯,后面我就NEW背景關系,就解決了uj5u.com熱心網友回復:
MARK一下uj5u.com熱心網友回復:
mark一下uj5u.com熱心網友回復:
許多時候發現對于業務靈活高強度的系統,其實 EF 產生爭議和耽誤的時間相當明顯。一定要同時使用 SQLHelper,避免過度依賴框架產生內耗。uj5u.com熱心網友回復:
這才是關鍵。使用全域context,不是EF的正確用法。應該使用區域context。
以為EF加載過一次資料后,再次加載還是舊資料(雖然sql仍然在資料庫端執行)。這是EF的特性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/29680.html
標籤:ASP.NET
