EF用编辑数据成功,然后刷新页面没有变

qq_41805127 2020-05-14 10:42:12
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一次上下文,更新后查询没问题,有没有更好的解决方案呢,还是我那里错了
...全文
2996 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
许多时候发现对于业务灵活高强度的系统,其实 EF 产生争议和耽误的时间相当明显。一定要同时使用 SQLHelper,避免过度依赖框架产生内耗。
圣殿骑士18 2020-06-20
  • 打赏
  • 举报
回复
引用 7 楼 qq_41805127 的回复:
嗯,后面我就NEW上下文,就解决了
这才是关键。使用全局context,不是EF的正确用法。应该使用局部context。 以为EF加载过一次数据后,再次加载还是旧数据(虽然sql仍然在数据库端执行)。这是EF的特性。
【Help】 2020-06-19
  • 打赏
  • 举报
回复
mark一下
  • 打赏
  • 举报
回复
MARK一下
qq_41805127 2020-06-03
  • 打赏
  • 举报
回复
嗯,后面我就NEW上下文,就解决了
qq_41805127 2020-05-14
  • 打赏
  • 举报
回复
iret有变化啊,返回1,执行成功,返回前端ajax.数据,然后前端在请求一个刷新,查询,返回得到的list集合里的model没有变,SQL跟踪SQL语句没问题。是不是上下文没释放?和上下文有关?,查询我用using后,就能刷新成功,那我的上下文唯一线程,EF新手,有点头疼。
正怒月神 版主 2020-05-14
  • 打赏
  • 举报
回复
引用 2 楼 qq_41805127 的回复:
改了,也是一样,奇了怪啦!
你调试到 iret = DB.SaveChanges();后,iret和model1 都没有变化?
qq_41805127 2020-05-14
  • 打赏
  • 举报
回复
改了,也是一样,奇了怪啦!
正怒月神 版主 2020-05-14
  • 打赏
  • 举报
回复
entry.State = System.Data.Entity.EntityState.Unchanged; 改成Modified呢
  • 打赏
  • 举报
回复
一般来说,每次请求应该生成新的db
正怒月神 版主 2020-05-14
  • 打赏
  • 举报
回复
引用 4 楼 qq_41805127 的回复:
iret有变化啊,返回1,执行成功,返回前端ajax.数据,然后前端在请求一个刷新,查询,返回得到的list集合里的model没有变,SQL跟踪SQL语句没问题。是不是上下文没释放?和上下文有关?,查询我用using后,就能刷新成功,那我的上下文唯一线程,EF新手,有点头疼。
那要看new DBContextFactory().GetDbContext()里面是怎么产生dbcontext的。 每次都用新的应该是没问题的。

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧