为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复 连接未关闭。连接的当前状态是正在连接吗?

如何修复 连接未关闭。连接的当前状态是正在连接吗?

C#
慕尼黑8549860 2023-09-24 17:18:19
在我开始我的项目之前,我没有收到任何错误,但是当我启动它时,我收到此错误连接未关闭。连接的当前状态为正在连接。错误在这段代码中public class RoleMenu{   private DBContext db = new DBContext();   public List<Menu> GetList_Menu_ByRole(Role role)   {        List<RoleMenu> roleMenus = db.RoleMenus.Include(u => u.Role).Include(u => u.Menu).ToList(); //error is here        List<Menu> roles = new List<Menu>();        foreach (var eachRoleMenu in roleMenus)        {              if (eachRoleMenu.RoleID == role.ID)              {                  roles.Add(eachRoleMenu.Menu);              }        }        return roles;  }}这是我的 web.config  <add name="DBContext" connectionString="Data Source=DESKTOP-SRRO03Q;Initial Catalog=Project1;Integrated Security=True;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />如何修复这个错误?谢谢,
查看完整描述

1 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

这仍然没有显示正确的错误源,但一般来说,我永远不会保留 a 的私有变量DBContext,除非在非常罕见的情况下。您需要让您的类RoleMenu实现IDisposable并正确使用它。


我建议您每个查询使用一个上下文,如下所示:


public class RoleMenu

{

    public List<Menu> GetList_Menu_ByRole(Role role)

    {

        using (DBContext db = new DBContext())

        {

            List<RoleMenu> roleMenus = db.RoleMenus.Include(u => u.Role).Include(u => u.Menu).ToList(); //error is here

            List<Menu> roles = new List<Menu>();

            foreach (var eachRoleMenu in roleMenus)

            {

                if (eachRoleMenu.RoleID == role.ID)

                {

                    roles.Add(eachRoleMenu.Menu);

                }

            }


            return roles;

        }

    }

}


查看完整回答
反对 回复 2023-09-24
  • 1 回答
  • 0 关注
  • 122 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信