C# ADO.NET未正确连接到数据库(多个错误)
我有一个ASP.NET MVC 3应用程序,在我的项目中我使用ADO.NET实体数据模型 为了访问数据,我使用中间类DataManager:C# ADO.NET未正确连接到数据库(多个错误),c#,asp.net,sql-server,asp.net-mvc-3,ado.net,C#,Asp.net,Sql Server,Asp.net Mvc 3,Ado.net,我有一个ASP.NET MVC 3应用程序,在我的项目中我使用ADO.NET实体数据模型 为了访问数据,我使用中间类DataManager: public class DataManager { private static mrhomeEntities _dataContext; public DataManager() { _dataContext = new mrhomeEntities(); } private OptionSt
public class DataManager
{
private static mrhomeEntities _dataContext;
public DataManager()
{
_dataContext = new mrhomeEntities();
}
private OptionStorageRepository _optionStorageRepository;
public OptionStorageRepository OptionStorage
{
get { return _optionStorageRepository ?? (_optionStorageRepository = new OptionStorageRepository(_dataContext)); }
}
}
在OptionStorageRepository类中,我有一个方法返回选项列表:
public IQueryable<OptionStorage> List()
{
return _dataContext.OptionStorage;
}
我还在Global.asax中注册了我的控制器fabrick,如下所示:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
ControllerBuilder.Current.SetControllerFactory(new ControllerFabricFactory());
}
在所有控制器中,我在构造函数中接收此参数,并在操作方法中使用:
public class HomeController : Controller
{
private readonly DataManager dm;
public HomeController(DataManager dm)
{
this.dm = dm;
}
[HttpGet]
public ActionResult Main()
{
Page page = dm.Page.Details(mainPageName);
PageNews pageNews = new PageNews();
pageNews.page = page;
pageNews.NewsList = dm.News.List(5);
pageNews.PopularProject = dm.Project.GetPopularProject();
if (pageNews.PopularProject != null)
{
var list = pageNews.PopularProject.ProjectPictures.Where(p => p.ProjectPictureTypes.Id == 1).ToList();
if (list.Count > 0)
{
ViewData["img"] = list[0].ThumbPath;
}
}
foreach (var item in dm.Page.List())
{
ViewData[item.Name] = item.ShortPageText;
}
ViewData["projects"] = dm.Project.GetMainPageProjects();
ViewData["MainText"] = dm.Page.Details("maintext").PageText;
return View(pageNews);
}
}
我的问题是:
当我在web浏览器中测试我的应用程序时,我发现一些奇怪的错误,其中包含有关连接到数据库或检索数据的信息,我的错误集合如下:
连接没有关闭。连接的当前状态为
连接。
不存在数据时读取的尝试无效
ExecuteReader需要打开且可用的连接。这个
连接的当前状态为打开。
不允许新事务,因为存在其他线程
正在会话中运行。
已添加具有相同密钥的项。
可能我使用了错误的结构来获取数据?每个问题:
更新:问题已解决,对象DataContext是静态的
Hi@IICuX-如果你有机会,请将决议作为你最终可以接受的答案发布-这将帮助其他人认识到这个问题有解决方案。
public class HomeController : Controller
{
private readonly DataManager dm;
public HomeController(DataManager dm)
{
this.dm = dm;
}
[HttpGet]
public ActionResult Main()
{
Page page = dm.Page.Details(mainPageName);
PageNews pageNews = new PageNews();
pageNews.page = page;
pageNews.NewsList = dm.News.List(5);
pageNews.PopularProject = dm.Project.GetPopularProject();
if (pageNews.PopularProject != null)
{
var list = pageNews.PopularProject.ProjectPictures.Where(p => p.ProjectPictureTypes.Id == 1).ToList();
if (list.Count > 0)
{
ViewData["img"] = list[0].ThumbPath;
}
}
foreach (var item in dm.Page.List())
{
ViewData[item.Name] = item.ShortPageText;
}
ViewData["projects"] = dm.Project.GetMainPageProjects();
ViewData["MainText"] = dm.Page.Details("maintext").PageText;
return View(pageNews);
}
}