잘하고 있습니다.저장소 업데이트, 삽입 또는 삭제 문이 예기치 않은 행 수 (0)에 영향을 받았습니다.
친절하게 해결할 수 있도록 도와 드리겠습니다. ASP.NET MVC 웹 응용 프로그램에서 아래 코드를 사용하고 있습니다.
[HttpPost]
public ActionResult ProductAddonsAdd(int? id, tblproductattributemapper model, string AllStorechk, int? ddlProduct, int? ddlCompany, string hdCompanyProductID)
{
DbTransaction dbTran = null;
try
{
tblproductattributemapper tblattributValMapper = new tblproductattributemapper();
db.Connection.Open();
dbTran = db.Connection.BeginTransaction();
int CompanyProductID = 0;
if(!string.IsNullOrEmpty(hdCompanyProductID))
{
CompanyProductID=Convert.ToInt32(hdCompanyProductID);
}
else
{CompanyProductID=db.tblcompanyproducts.Where(x => x.nProductID == ddlProduct && x.nCompanyID == ddlCompany).FirstOrDefault().nCompanyProductID;}
if (id == null)
{
if (db.tblproductattributemappers.Where(x => x.nCompanyProductID == CompanyProductID && x.nAttributeID == model.nAttributeID).Count() != 0)
{
TempData["Errmsg"] = "Addon value already exist with this product!";
return RedirectToAction("ProductAddons");
}
tblattributValMapper = new tblproductattributemapper();
tblattributValMapper.nAttributeID = model.nAttributeID;
tblattributValMapper.nCompanyProductID = CompanyProductID;
db.AddTotblproductattributemappers(tblattributValMapper);
}
else
{
tblattributValMapper = db.tblproductattributemappers.Where(x => x.nMapperID == id).FirstOrDefault();
tblattributValMapper.nAttributeID = model.nAttributeID;
tblattributValMapper.nCompanyProductID = CompanyProductID;
}
db.SaveChanges(); //// Error comes here when it goes into else part(update mode) then executed here
// deleting objects
var objmapperdetails = db.tblproductattributemapperdetails.Where(x => x.nMapperID == tblattributValMapper.nMapperID).ToList();
if (objmapperdetails != null && objmapperdetails.Count() > 0)
{
foreach (var item in objmapperdetails)
{
db.tblproductattributemapperdetails.DeleteObject(item);
}
}
string[] arrAllStore = AllStorechk.Split(',');
tblproductattributemapperdetail detail;
foreach (var item in arrAllStore)
{
Int64 _id = Convert.ToInt64(item);
detail = new tblproductattributemapperdetail();
detail.nMapperID = tblattributValMapper.nMapperID;
detail.nAttributeValueMasterID = _id;
detail.nPrice = db.tblattributevaluemasters.Where(x => x.nAttributeValueMasterID == _id).FirstOrDefault().nPrice;
db.AddTotblproductattributemapperdetails(detail);
}
db.SaveChanges();
dbTran.Commit();
TempData["Successmsg"] = "Saved successfully";
}
catch (Exception ex)
{
dbTran.Rollback();
TempData["Errmsg"] = "Failed to save ";
Common.TrapError(ex.StackTrace, "Attribute/ProductAddons");
}
finally
{
db.Connection.Close();
}
return RedirectToAction("ProductAddons");
}
편집 모드에서 레코드를 열고 아무 것도 변경하지 않고 제출할 때; 그때 그것은 다른 부분으로 이동하여 엔티티 tblattributValMapper properities nAttributeID & nCompanyProductID를 db.SaveChanges();가 될 때 이전 값으로 업데이트합니다. 오류 "Store update, insert 또는 delete 문이 예기치 않은 행 수 (0)에 영향을 미쳤습니다. 엔티티가로드 된 후 엔티티가 수정되거나 삭제되었을 수 있습니다."ObjectStateManager 항목을 새로 고칩니다. "
나는 구글에 그것을 확인하고 db.Refresh(RefreshMode.ClientWins,tblattributValMapper );
같은 몇 가지 솔루션을 적용하지만 나에게 도움이되지 않습니다.
저는이 프로젝트에서 일하는 한 명의 개발자로, 엔티티는 다른 곳에서 업데이트하지 않으므로 기본 키 값을 확인하고 모델을 통과합니다. 누구든지 내가 실수를 저지르고있는 아이디어가있을 수 있습니다. 첨부 된 스크린 샷을 참조하십시오.
도움을 주시면 감사하겠습니다.