ADO.net实体框架访问不到数据库最新数据问题
来源:互联网 发布:mac os 10.7升级包 编辑:程序博客网 时间:2024/05/21 10:02
我最近在开发中使用ADO.net实体框架访问数据库,一个程序写入一个程序读取,然后发现其中一个读取的程序始终访问不到最新的数据,比如A字段是int 100,然后我的一个写入程序把他改成了90,然后我的读取程序始终读取的是100;如果是更新再次读取的话,或者删除添加可以访问到正常的数据。
搞了半天我以为底层实现是加载到内存表,好比datatable;后来记起.net的GC机制,发现数据访问是属于非托管资源。所以我找到了问题根源是因为没有释放数据访问上下文。于是就重写了代码如下:
/// <summary> /// 返回工单主数据,异常位空,无数据位空,falg位FALSE时执行全部查询 /// </summary> /// <param name="dt"></param> /// <param name="flag">falg位FALSE时执行全部查询</param> /// <returns></returns> public IList<T_DisplayMain> GetDisplayDB(DateTime dt, bool flag) { try { if (flag) { //释放资源,避免在同一窗体中取到垃圾数据!!! using (MideaDisplayDBEntities md = new MideaDisplayDBEntities()) { //指定日期查询,精确到天 var a = from s in md.T_DisplayMain where s.Time.Value.Year == dt.Year && s.Time.Value.Month == dt.Month && s.Time.Value.Day == dt.Day select s; return a.ToList(); } } else { var a = from s in md.T_DisplayMain select s; return a.ToList(); } } catch (Exception ex) { LogExecute.WriteDBExceptionLog(ex); List<T_DisplayMain> a = null; return a.ToList(); } }
于是可以访问到最新的数据。虽说不是什么大问题,但却有可以说明之处。以后大家注意下非托管资源的释放问题,可能有些莫名其妙的问题就是由他们引起的。
0 0
- ADO.net实体框架访问不到数据库最新数据问题
- ADO.NET 实体框架
- ADO,NET 实体类 和 数据访问类
- ADO.NET 数据库访问之数据分页
- ADO.NET实体数据框架中存储过程的使用
- ADO.NET 实体框架概述
- ADO.NET实体框架概述
- ADO.NET 实体框架概述
- 用Ado.Net实体数据模型 向sql数据库添加数据
- ADO.NET数据库访问
- ADO.NET数据库访问
- Ado.Net 访问数据库
- ADO.NET访问数据库
- ADO.NET数据访问
- ADO.NET 数据访问
- ADO.NET实体框架引发争论
- ado.net 实体框架快速入门学习
- 使用ADO.NET访问数据库
- oc中如何调用c++的方法
- Android开发————RaidoGroup学习笔记
- 2058 The sum problem
- Adaptive Support-weighted Approach for Correspondence Search
- Eclise中SVN插件安装和使用
- ADO.net实体框架访问不到数据库最新数据问题
- thinkPHP中的三大自动
- 关于对齐的总结
- Java开源内容管理CMS系统J4CMS的几个样式
- Web 开发中很实用的10个效果【附源码下载】
- java是什么?
- 深入理解JavaScript系列 ----(13):This? Yes,this!
- 编程精华资源(ITeye优秀专栏)大汇总
- 黑马程序员--多线程及其同步