C# 原因是什么;创建模型时不能使用上下文;?

C# 原因是什么;创建模型时不能使用上下文;?,c#,asp.net-mvc-3,entity-framework,C#,Asp.net Mvc 3,Entity Framework,我不熟悉MVC和实体框架 我有一个简单的Azure MVC 3 web应用程序。我使用的是实体框架和Ninject,我的数据存储在SQL数据库中 每当我尝试向存储库发出并发请求时,就会收到此错误消息。例如,一个存储库是图像标题,因此当加载页面时,如果有多张图片,通常会出现以下消息: “创建模型时无法使用上下文。” 这是我的连接字符串: <add name="EFDbContext" connectionString="Data Source=.\SQLEXPRESS;Initial Cat

我不熟悉MVC和实体框架

我有一个简单的Azure MVC 3 web应用程序。我使用的是实体框架和Ninject,我的数据存储在SQL数据库中

每当我尝试向存储库发出并发请求时,就会收到此错误消息。例如,一个存储库是图像标题,因此当加载页面时,如果有多张图片,通常会出现以下消息:

“创建模型时无法使用上下文。”

这是我的连接字符串:

<add name="EFDbContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=TheDBName; Integrated Security=SSPI; MultipleActiveResultSets=True" providerName="System.Data.SqlClient"/>
如果您需要任何其他信息来帮助查找问题,请告诉我

干杯

编辑:这是堆栈跟踪

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) 在System.Data.Entity.Internal.LazyInternalContext.InitializeContext()中 位于System.Data.Entity.Internal.InternalContext.Initialize()处 位于System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(类型entityType) 位于System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() 位于System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() 位于System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider() 位于System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1源,表达式`1谓词) 在C:\MVCProject\MVCProject\MVCProject\MVCProject.WebUI\Controllers\ImageController.GetImageByIDWithSize(字符串id)中的MVCProject.WebUI.ImageController.GetImageByIDWithSize处:第131行 在C:\MVCProject\MVCProject\MVCProject\MVCProject.WebUI\Controllers\ImageController.cs中的MVCProject.WebUI.Controllers.ImageController.GetImage(字符串id)处:第215行 在lambda_方法中(闭包、控制器基、对象[]) 位于System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext ControllerContext,IDictionary`2参数) 位于System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext ControllerContext,ActionDescriptor ActionDescriptor,IDictionary`2参数) 在System.Web.Mvc.ControllerActionInvoker.c_uuDisplayClass15.b_uuu12()中 位于System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter筛选器、ActionExecutingContext预文本、Func`1 continuation)
底层DbContext的生活方式是什么?我猜您的存储库依赖于db上下文,如果您的DbContext注册为singleton,则会崩溃。如果是这种情况,请确定DbContext pr请求的范围,创建DbContext成本低廉,而且不打算将其作为单个实例保存。

只是将其添加到我的帖子中。谢谢失败的代码在哪里调用?它是仅在重新启动应用程序时发生还是一直发生?发生这种情况时,有多少并发请求正在运行?我有一个页面控制器。它构建页面,调用GetImage(stringid)函数。然后,GetImage函数访问CurrentCaptionRepository并尝试检索标题。主页有两个图像,通常(但不总是)会导致问题。每当我尝试构建一个包含多个图片的页面时(因此需要两个图片请求),就会发生这种情况。您好,我将其绑定为InRequestScope。这就是你的意思吗?谢谢你回复。听起来不错,但我还是把钱花在线程/共享状态问题上:-)你的控制器如何获得存储库实例?依赖注入?我猜您正在使用Ninject mvc扩展,以便正确注册控制器。您可以发布控制器代码吗?这是控制器代码:public class PageController:controller{private IPagesRepository currentPageRepository;public PageController(IPagesRepository pageRepository){currentPageRepository=pageRepository;}这是我的操作函数中崩溃的一行:Page currentPage=currentPageRepository.Pages.FirstOrDefault(a=>a.Id==Id);谢谢我试图编辑我原来的帖子来添加代码,但一直被拒绝。
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)