Надеюсь, у вас все хорошо.Операция обновления, вставки или удаления магазина влияет на неожиданное количество строк (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 nAttributeID & nCompanyProductID со старыми значениями, когда db.SaveChanges(); было выполнено его толерантность Ошибка «Заявление об обновлении, вставке или удалении Store повлияло на неожиданное количество строк (0). Объекты могут быть изменены или удалены с момента загрузки объектов. Обновить записи ObjectStateManager."
проверить его на Google и применил какое-то решение, как db.Refresh(RefreshMode.ClientWins,tblattributValMapper );
, но это не помогает мне.
Я один разработчик, работающий над этим проектом, поэтому сущность не обновляется ни с каким другим местом, я также проверяю значение первичного ключа, оно проходит через модель. Может ли у кого-нибудь идея, в которой я ошибаюсь. См. Прилагаемые скриншоты.
Любая помощь будет очень признательна.