关于EF+LINQ查询提示数据库状态已关闭的问题

上周5 运行程序是没有问题的 期间也就关机重启了一次 然后现在再运行就出现LINQ 查询不出来数据了,然后找到一个错误提示是 ExecuteReader 要求已打开且可用的 Connection。连接的当前状态为已关闭。。我很无奈
数据库连接是没问题的 就是在查询的时候提前关闭了
图片说明这是一个查询方法
图片说明声明
我使用另一个方法查询单条数据是没有问题的。就是用 Filter 这个方法会有问题。
17.00更新------经过一下午的摸索,解决了这个BUG。原因在评论区

3个回答

错误原因:
连接的当前状态为已关闭。或者只创建了Connection对象,没有调用
Connection.Open()方法;
也就是:connection.State != ConnectionState.Closed
解决方法:
调用Connection.Open()方法;
或者添加判断,例如下面的代码:
if (MyIni.Gs_con.State != ConnectionState.Closed)
{
OleDbCommand mysc = new OleDbCommand(sqltext, MyIni.Gs_con);
//tools.MB(sqltext);
result = tools.fieldnullint(mysc.ExecuteScalar());
if (result == 0) return false;
}

https://blog.csdn.net/testcs_dn/article/details/47681027

sinat_36203916
浮沉与木 但是我并没有像你这样去做 而是修改了 我的逻辑代码。
接近 2 年之前 回复
sinat_36203916
浮沉与木 很感谢回答,经过我不懈努力终于解决了这个BUG。
接近 2 年之前 回复
caozhy
每个人都有一个梦才不会孤单的说话就有天堂 应该就是这个问题了。
接近 2 年之前 回复

判断状态是否关闭,如果关闭执行打开

这个是我公司给我的一个实习项目,让我做一个关于权限的框架。
用的DDD思想进行开发。表示对于新手来说 难度不小。
然后上周的时候用户查询整个流程是可以跑通的,虽然写了不少垃圾代码出来,毕竟还在摸索。
今天上午运行代码的时候 就开始出错,程序是没有报错的, linq 查询也有返回的是 IQueryable类型的结果,我是想将它转换成集合。
于是在应用层就有了

public IList<Users> GetUser()
        {
            return _userdb.Find(p => p.Id != null) as IList<Users>;
        }

这样的操作。 就是这里的代码错了

IQueryable 类有自带的toList() 方法,并不需要强制转换成IList, IList方法是继承了IEnumerable 这里的错误就是
IQueryable和IEnumerable 这两个类的区别导致。详细的区别可以查一下资料。
然后优化了一下代码 将 DbContext 也进行了注入,删除了垃圾代码。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问