Мы используем Entity Framework с MySQL отображением. DbContext
вводится в контроллер.
Добавление контекста данных:
IManageClientService _manageClientService;
public ManageClientController(IManageClientService manageClientService, DataContext dataContext)
: base(dataContext)
{
this._manageClientService = manageClientService;
}
Ниже приведен один из методов действия.
[HttpGet]
public IActionResult Search()
{
var model = new ClientControlData();
try
{
model.ClientNameList = DataContext.Clients
.Select(c => new SelectListItem
{
Text = c.ClientName,
Value = c.ClientId.ToString()
});
}
catch (Exception ex)
{
olog.Error("An exception occurred while processing Search for Client: " + ex.Message);
olog.Info("Stack trace for exception: " + ex.StackTrace);
}
return View(model);
}
После завершения выполнения при загрузке страницы мы вызываем другой метод действия с параметрами по умолчанию, который возвращает JSON. Ниже приведен код для метода действия.
[HttpGet]
public IActionResult GetClientDetails(string sidx, string sord, int page, int rows, string clientName)
{
int pageIndex = Convert.ToInt32(page) - 1;
int pageSize = rows;
var clientControlData = new List<ClientControlData>();
var clientData = from w in DataContext.ClientControlDatas
select new
{
w.ControlDataId,
w.ClientId,
w.WarehouseId,
w.WarehouseName,
w.RouteUsersAllowed,
w.CreateDate,
w.CreateBy,
w.ModifyDate,
w.ModifyBy,
w.Status
};
if (!string.IsNullOrEmpty(clientName))
{
clientData = clientData.Where(p => p.ClientId.ToString() == clientName.ToString());
}
foreach (var obj in clientData)
{
var objClientId = obj.ClientId;
var objClient = DataContext.Clients.Where(x => x.ClientId == objClientId).FirstOrDefault();
}
}
Это ошибка, которую я получаю:
Уже существует открытый DataReader, связанный с этим соединением, который должен быть закрыт первым