2011-07-28 15 views
1

私はASP.NET MVC 3アプリケーションを使用していますが、私のプロジェクトではADO.NETエンティティデータモデルを使用しています。ADO.NETがデータベースに正しく接続していません(複数のエラー)

I、中間クラス(データマネージャー)を使用したデータへのアクセスのため

:私はより多くを有する

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

このようなクラス:私はオプションのリストを返す1つの方法を有する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(この構造で)データベース内のデータを取得および編集します。

はまだ私がデータマネージャークラスの新しいオブジェクトを渡す私のControllerFabrickを、持っている:

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

そして、すべてで:また、私はこのようにGlobal.asaxの中で私のコントローラをファーブリック登録

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

そして、私の質問:私は奇妙なエラーを持っているWebブラウザで自分のアプリケーションをテストする場合

、データを取り出すデータベースへの接続に関する情報が含まれているか、私は下に私のエラーのコレクションを持っている:接続だった

  • を閉じていない。接続の現在の状態は 接続です。
  • データが存在しないときに無効な読み取りを試行する
  • ExecuteReaderには、開いて使用可能な接続が必要です。 接続の現在の状態は開いています。
  • セッション内で他のスレッド が実行されているため、新しいトランザクションは許可されません。
  • 同じキーを持つアイテムが既に追加されています。

多分私はデータを取得するために間違った構造を使用しましたか?

+2

こんにちは@IICuXオブジェクト - あなたはチャンスを持っているとき、あなたは最終的に受け入れることができます答えとして解像度を投稿してください - これは他の人がその問題を解決策として認識するのに役立ちます。 –

答えて

0

ごとの質問:

更新:問題解決、(DataContextのは静的だった

関連する問題