Я кодирую интернет-приложение MVC5 и использую EF6.EF6 - Существует уже открытый DataReader, связанный с этой Командой, который должен быть закрыт первым
У меня есть Edit
ActionResult
, который вызывается, когда редактируется объект Asset
. Мне также нужно обновлять значения других объектов, когда редактируется объект Asset
. Функция UpdateAssociatedAssetObjects
делает это.
Я получаю следующее сообщение об ошибке:
There is already an open DataReader associated with this Command which must be closed first.
В функции UpdateAssociatedAssetObjects
, в следующей строке кода:
if (item.mapMarker.Id == asset.Id)
Вот Edit ActionResult
:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Edit(AssetViewModel assetViewModel)
{
if (ModelState.IsValid)
{
db.Entry(assetViewModel.asset).State = EntityState.Modified;
assetViewModel.asset.lastUpdate = DateTime.Now;
if (assetViewModel.asset.linkFromExternalResource)
{
assetViewModel.asset.webAddress = assetViewModel.webAddress;
}
else
{
assetViewModel.asset.webAddress = assetViewModel.filename;
}
db.Entry(assetViewModel.asset).Property(uco => uco.creationDate).IsModified = false;
db.Entry(assetViewModel.asset).Property(uco => uco.userName).IsModified = false;
assetService.UpdateAssociatedAssetObjects(db, assetViewModel.asset);
await db.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(assetViewModel);
}
Здесь является функцией UpdateAssociatedAssetObjects
:
public void UpdateAssociatedAssetObjects(CanFindLocationDatabaseContext db, Asset asset)
{
foreach (var item in db.mapLocations)
{
if (item.mapMarker.Id == asset.Id)
{
item.lastUpdate = DateTime.Now;
}
}
}
Могу ли я, пожалуйста, помочь с этим кодом?
Я попытался разместить функцию UpdateAssociatedAssetObjects
после await db.SaveChangesAsync()
и использовать новый объект контекста базы данных, но ошибка все еще происходит.
Заранее спасибо
Как выглядит строка подключения? –
Строка подключения работает. Объекты успешно добавляются и удаляются. Считаете ли вы, что проблема связана с строкой соединения? – user3736648
Возможно, вот почему я спросил :) –