MVC5 인터넷 응용 프로그램을 코딩 중이며 EF6을 사용하고 있습니다.EF6 - 이미이 명령과 관련된 열려있는 DataReader가 있습니다. 먼저 닫아야합니다.
Asset
개체를 편집 할 때 호출되는 Edit
ActionResult
이 있습니다. Asset
개체를 편집 할 때 다른 개체 값을 업데이트해야합니다. UpdateAssociatedAssetObjects
함수가이 작업을 수행합니다. 다음 코드 줄에 UpdateAssociatedAssetObjects
기능에
There is already an open DataReader associated with this Command which must be closed first.
:
나는 다음과 같은 오류가 발생하고 여기에
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;
}
}
}
이 코드에 도움이 될만한가 있나요?
await db.SaveChangesAsync()
다음에 UpdateAssociatedAssetObjects
함수를 배치하고 새 데이터베이스 컨텍스트 개체를 사용했지만 오류가 여전히 발생했습니다.
미리 감사드립니다.
연결 문자열은 어떤 모양입니까? –
연결 문자열이 모두 작동합니다. 개체가 성공적으로 추가 및 제거되고 있습니다. 연결 문자열에 문제가 있다고 생각합니까? – user3736648
어쩌면, 그 이유는 내가 물었다. –