В основном у меня есть репозиторий, который контролирует доступ к моей модели EF. Он создает ссылку и затем в зависимости от того, к какому хранилищу обращаются, возвращает запрашиваемую сущность. Прямо сейчас я раскрываю метод Get IQueryable, который будет возвращать сущность непосредственно из живого ObjectContext. Хорошая практика говорит мне, что я должен обернуть любое использование ObjectContext внутри оператора using, чтобы убедиться, что оно правильно расположено, но когда я делаю это из репозитория, я получаю ошибку, что ObjectContext уже был удален к моменту загрузки контроллера. Я удалил использование, и тогда оно работает просто отлично, но я хотел бы знать, как обычно следует подходить к этому. Я хотел бы сохранить возврат IQueryable, поскольку мне может потребоваться выполнить различные команды для него. Какие-либо предложения? Помогает ли EF защитить меня от открытия открытых соединений, если начинают поступать несколько HTTP-запросов?
Ошибки:
public IQueryable<IUser> Get
{
get
{
using (var context = new DrinkersPassportEntities(_connString))
{
return context.Users.AsQueryable();
}
}
}
Работает, но не помогает мне спать по ночам:
public IQueryable<IUser> Get
{
get
{
var context = new DrinkersPassportEntities(_connString);
return context.Users.AsQueryable();
}
}
В данный момент все, что делает мой контроллер, таково:
public ViewResult Index( )
{
return View(userRepo.Get);
}