Je suis en train de coder une application internet MVC5 et j'utilise EF6. J'ai un Edit
ActionResult
qui est appelé lorsqu'un objet Asset
est édité. J'ai également besoin de mettre à jour d'autres valeurs d'objets lorsqu'un objet Asset
est édité. La fonction UpdateAssociatedAssetObjects
le fait.EF6 - Il y a déjà un DataReader ouvert associé à cette commande qui doit être fermé en premier
Je reçois l'erreur suivante:
There is already an open DataReader associated with this Command which must be closed first.
Dans la fonction UpdateAssociatedAssetObjects
, à la ligne de code suivante:
if (item.mapMarker.Id == asset.Id)
Voici le 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);
}
ici est la fonction UpdateAssociatedAssetObjects
:
public void UpdateAssociatedAssetObjects(CanFindLocationDatabaseContext db, Asset asset)
{
foreach (var item in db.mapLocations)
{
if (item.mapMarker.Id == asset.Id)
{
item.lastUpdate = DateTime.Now;
}
}
}
Puis-je avoir de l'aide avec ce code?
J'ai essayé de placer la fonction UpdateAssociatedAssetObjects
après le await db.SaveChangesAsync()
et en utilisant un nouvel objet de contexte de base de données, mais l'erreur se produit toujours.
Merci à l'avance
À quoi ressemble la chaîne de connexion? –
La chaîne de connexion fonctionne. Les objets sont ajoutés et supprimés avec succès. Pensez-vous que le problème serait avec la chaîne de connexion? – user3736648
Peut-être, c'est pourquoi j'ai demandé :) –