2011-07-28 4 views
1

ASP.NET MVC 3 응용 프로그램이 있고 프로젝트에 ADO.NET 엔터티 데이터 모델을 사용하고 있습니다.ADO.NET이 데이터베이스에 제대로 연결되지 않았습니다. (여러 오류)

내가 중간 클래스 (DataManager에)를 사용하여 데이터에 대한 액세스를 들어

: 나는 이상이

public IQueryable<OptionStorage> List() 
    { 
     return _dataContext.OptionStorage; 
    } 

이러한 클래스 : OptionStorageRepository 클래스에서

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)); } 
    } 
} 

을 나는 옵션의 목록을 반환 한 방법이 15 (이 구조로) 데이터베이스의 데이터를 가져오고 편집 할 수 있습니다.

아직도 내가 DataManager에 클래스의 새 개체를 전달 내 ControllerFabrick을 가지고 :

protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 
     RegisterGlobalFilters(GlobalFilters.Filters); 
     RegisterRoutes(RouteTable.Routes); 
     ControllerBuilder.Current.SetControllerFactory(new ControllerFabricFactory()); 
    } 

그리고 모두 : 또한이 같은 Global.asax에 내 컨트롤러를 fabrick 등록

public class ControllerFabricFactory : DefaultControllerFactory 
{ 
    protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType) 
    { 
     return Activator.CreateInstance(controllerType, new DataManager()) as IController; 
    } 
} 

컨트롤러 나는이 매개 변수를 생성자에서 받아 내 동작 메서드에서 사용합니다.

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); 
    } 
} 

그리고 내 질문 :

  • 연결했다 :

    I는 웹 브라우저에서 내 응용 프로그램을 테스트 나는 이상한 오류가있는, 즉 데이터베이스 또는 데이터를 검색하는 연결에 대한 정보를 포함

    , 내가 아래에있는 내 오류의 컬렉션이 닫히지 않았습니다. 연결의 현재 상태는 입니다.
  • 데이터가 없을 때 올바르지 않은 시도가 있습니다.
  • ExecuteReader에는 열려 있고 사용 가능한 연결이 필요합니다. 연결의 현재 상태가 열려 있습니다.
  • 세션에 다른 스레드 이 실행 중이므로 새 트랜잭션이 허용되지 않습니다.
  • 같은 키를 가진 항목이 이미 추가되었습니다.

아마도 데이터를 가져 오기 위해 잘못된 구조를 사용했을까요?

+2

안녕 @IICuX 객체 - 당신은 기회가있을 때, 당신은 궁극적으로 받아 들일 수있는 답변으로 해상도를 게시하시기 바랍니다 - 이것은 다른 사람들이 그 문제를 해결책을 가진 것으로 인식하도록 돕습니다. –

답변

0

당 질문 :

업데이트 : 문제 해결 (DataContext에 정적이었다

관련 문제