Я столкнулся с проблемой при переходе от локального сервера развития на местном сервере IIS (ASP.NET MVC4) с помощью следующей контроллера Метод:DbContext с помощью придаточного в Asp.Net Json-Call
public JsonResult GetJsonData(string Context, string Language)
{
using (KeyValueDBContext db = new KeyValueDBContext())
{
var entries = from u in db.KeyValues
where ((u.Context == Context) && (u.Language == Language))
select u;
return Json(entries, JsonRequestBehavior.AllowGet);
}
}
Используя локальный сервер, я получил данные при вызове метода из Javascript без проблем. Метод извлекает коллекцию в основном пар Key-Value из репозитория базы данных и отправляет их клиенту). После перехода на IIS я получил исключение, в котором говорилось, что dbcontext уже был удален (хотя предложение use завершается после return-statement). (NB: Visual Studio также не удалось найти JSONSerializer.cs по какой-то причине, но только тогда, когда возникла ошибка). Переход к следующей версии решена проблема полностью:
public JsonResult GetJsonData(string Context, string Language)
{
KeyValueDBContext db = new KeyValueDBContext();
var entries = from u in db.KeyValues
where ((u.Context == Context) && (u.Language == Language))
select u;
return Json(entries, JsonRequestBehavior.AllowGet);
}
В обоих случаях это было с помощью-блок:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using beepov4.Models; // project-models
Мой вопрос: Является ли это приемлемым способом использовать DbContext с целью JSON-вызовы (и отбрасывание предложения-использования), или есть какая-то проблема или скрытая проблема, о которой я должен знать?
Да, это было то, что я искал. «ToList()» заставляет запрос выполняться немедленно, и в этом случае при дипоризации dbcontext не создает проблем. Я попробовал альтернативы, введя результат в списки пользовательских типов, но это прямолинейно. Благодарю. – jank