ارور در آپدیت جدول

شهرام

عضویت : 1397/10/11 پرسش ها : 49 پاسخ ها : 32

ارور در آپدیت جدول

ارسال شده در : ‫۵ ماه قبل، سه شنبه ۱۵ مرداد ۱۳۹۸، ساعت ۲۲:۴۷

سلام هنگام آپدیت جدول این اروز میده

System.InvalidOperationException: 'Attaching an entity of type 'DataLayer.ProductRequest' failed because another entity of the same type already has the same primary key value. This can happen when using the 'Attach' method or setting the state of an entity to 'Unchanged' or 'Modified' if any entities in the graph have conflicting key values. This may be because some entities are new and have not yet received database-generated key values. In this case use the 'Add' method or the 'Added' entity state to track the graph and then set the state of non-new entities to 'Unchanged' or 'Modified' as appropriate.'

 

 if (id == null)
                {
                    return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                }

               ProductRequest productRequestOld = db.ProductRequests.Find(id);
                ProductRequest productRequest = new ProductRequest()
                {
                    ProductRequestID = id.Value,
                    DateTime = productRequestOld.DateTime,
                    Title = productRequestOld.Title,
                    UserID = productRequestOld.UserID,
                    Description = productRequestOld.Description,
                    Status = 9
                };
                db.Entry(productRequest).State = EntityState.Modified;
                db.SaveChanges();

 

شهرام

عضویت : 1397/10/11 پرسش ها : 49 پاسخ ها : 32
ارسال شده در :‫۵ ماه قبل، چهار شنبه ۱۶ مرداد ۱۳۹۸، ساعت ۰۸:۱۶

از این دستور استفاده کردم درست شد 

کار اصولی هست؟

db.ProductRequests.AsNoTracking().Where(p => p.ProductRequestID == id).FirstOrDefault();

 

0 تشکر

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 8957
ارسال شده در :‫۵ ماه قبل، چهار شنبه ۱۶ مرداد ۱۳۹۸، ساعت ۱۰:۳۲

سلام 

بله 

0 تشکر

شهرام

عضویت : 1397/10/11 پرسش ها : 49 پاسخ ها : 32
ارسال شده در :‫۵ ماه قبل، پنج شنبه ۱۷ مرداد ۱۳۹۸، ساعت ۰۹:۲۶

زمانی هم که توی Foreach از دستور  

db.Entry(productRequest).State = EntityState.Modified;

استفاده میکنم باز همین خطا رو میده چطور میتونم چند بار آپدیت کنم با یک context

کار درستیه detach  کنم؟

 db.Entry(productRequestItemSenToShop).State = EntityState.Detached;

 

0 تشکر

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 8957
ارسال شده در :‫۵ ماه قبل، پنج شنبه ۱۷ مرداد ۱۳۹۸، ساعت ۰۹:۳۹

بله detach کنید چون در حال استفاده توسط query که زدید هست 

0 تشکر

برای ارسال پاسخ باید وارد شوید و یا در سایت عضو شوید