Что вызывает: «Контекст не может быть использован во время создания модели»? - PullRequest
4 голосов
/ 04 декабря 2011

Я новичок в MVC и Entity Framework.

У меня есть простое веб-приложение Azure MVC 3.Я использую Entity Framework и Ninject, и мои данные хранятся в базе данных SQL.

Я получаю это сообщение об ошибке всякий раз, когда пытаюсь сделать параллельные запросы в мой репозиторий.Например, один репозиторий представляет собой заголовки изображений, поэтому при загрузке страницы, если имеется более одного изображения, обычно происходит сбой с этим сообщением:

«Контекст не может использоваться во время создания модели».

Вот моя строка подключения:

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

Для Ninject, когда я связывал интерфейс, я пытался изменить его на InTransientScope, а также InRequestScope.Без разницы.

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 Ответ

1 голос
/ 09 февраля 2012

Каков образ жизни базового DbContext? Я предполагаю, что ваш репозиторий зависит от контекста db, и если ваш DbContext зарегистрирован как одиночный, это взорвется. Если это так, создайте область действия вашего запроса DbContext pr, создание DbContext является недорогим и не предназначено для хранения в качестве единственного экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...