2011-12-04 21 views
4

私はMVCとEntity Frameworkが初めてです。原因:「モデルの作成中にコンテキストを使用できません。」

私は単純なAzure MVC 3ウェブアプリケーションを持っています。私はEntity FrameworkとNinjectを使用しています。私のデータはSQLデータベースに保存されています。

リポジトリへの同時要求を作成しようとすると、このエラーメッセージが表示されます。たとえば、1つのリポジトリは画像キャプションなので、ページが読み込まれるときに複数の画像がある場合は、通常このメッセージで失敗します。

"モデルの作成中にコンテキストを使用できません。私はInTransientScopeともInRequestScopeを使用するように変更しようとしたインターフェースをバインドする際に、Ninjectのために

<add name="EFDbContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=TheDBName; Integrated Security=SSPI; MultipleActiveResultSets=True" providerName="System.Data.SqlClient"/> 

は、ここに私の接続文字列です。変わりはない。

this.ninjectKernel.Bind<ICaptionsRepository>().To<EFCaptionRepository>().InTransientScope(); 

それが失敗した部分はここにある:

Caption foundCaption = currentCaptionRepository.Captions.FirstOrDefault(a => a.ID == pictureID); 

あなたは問題を見つけるのを助けるために、他の情報が必要な場合は私に知らせてください。

乾杯!

編集:ここではスタックトレースは

 
    at System.Data.Entity.Internal.LazyInternalContext.InitializeContext() 
    at System.Data.Entity.Internal.InternalContext.Initialize() 
    at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) 
    at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() 
    at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() 
    at System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider() 
    at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source, Expression`1 predicate) 
    at MVCProject.WebUI.Controllers.ImageController.GetImageByIDWithSize(String id) in C:\MVCProject\MVCProject\MVCProject.WebUI\Controllers\ImageController.cs:line 131 
    at MVCProject.WebUI.Controllers.ImageController.GetImage(String id) in C:\MVCProject\MVCProject\MVCProject.WebUI\Controllers\ImageController.cs:line 215 
    at lambda_method(Closure , ControllerBase , Object[]) 
    at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.c__DisplayClass15.b__12() 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) 
+1

スタックトレースとは何ですか? – SLaks

+0

ちょうど私のポストにそれを追加しました。ありがとう! – kodikas

+1

失敗したコードはどこにありますか?それはアプリケーションを再起動したとき、または常時起きているのでしょうか?これが発生したときに実行されている同時要求の数はいくつですか? –

答えて

1

いただきまし基礎となるDbContextのライフスタイルですか?私はあなたのリポジトリがdbコンテキストに依存していると推測しています。あなたのDbContextがシングルトンとして登録されていれば、これは爆発します。このような場合は、DbContextのpr要求をスコープしてください.DbContextを作成する方が安価であり、単一のインスタンスとして保持することは意図されていません。

+0

こんにちは、私はInRequestScopeとしてバインドしました。それはあなたが意味することですか?これについてお返事いただきありがとうございます。 – kodikas

+0

それは正しく聞こえるが、私はまだこのスレッド/共有状態の問題である私のお金を入れている:-)あなたのコントローラはどのようにリポジトリインスタンスを取得するのですか?依存性注入? – Marius

+0

はい、Ninjectによって。 – kodikas

関連する問題