在启动项目之前,我没有收到任何错误,但是在启动项目时出现了此错误
连接未关闭。连接的当前状态为正在连接。
此代码中有错误
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" />
如何解决此错误?谢谢,
答案 0 :(得分:1)
这仍然没有显示正确的错误源,
但总的来说,除非在极少数情况下,否则我永远不会保留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;
}
}
}