PDA

View Full Version : مشکل استفاده از 2 کلاس همزمان repository



r4hgozar
شنبه 25 اسفند 1397, 21:14 عصر
سلام.
وقتی در یک اشکن post بخوام بصورت همزمان از 2 ریپوزیتوری استفاده کنم دچار مشکل می شم. و ارور بر می خرم
یعنی اگه بخوام از ریپوزیتوری های findbyid و edit که نوشتم بصورت همزمان استفاده کنم به ارور زیر بر می خورم .


cannot be tracked because another instance with the same key value for {'Id'} is already being tracked.


در اینجا باید چی کار انجام داد؟

ali_md110
یک شنبه 26 اسفند 1397, 12:33 عصر
شما دارید از EF استفاده میکنید و این خطای سیستم رهگیری ef هست
اگر کدهاتون گذاشته بودید جهت راهنمایی بهتر بود
موجودیتی که بر روی ان عمل ویرایش انجام دادید را باید از سیستم رهگیری جدا کنید


_Entry(model).State = EntityState.Added;
_Entry(model).State = EntityState.Detached;

r4hgozar
دوشنبه 27 اسفند 1397, 22:18 عصر
شما دارید از EF استفاده میکنید و این خطای سیستم رهگیری ef هست
اگر کدهاتون گذاشته بودید جهت راهنمایی بهتر بود
موجودیتی که بر روی ان عمل ویرایش انجام دادید را باید از سیستم رهگیری جدا کنید


_Entry(model).State = EntityState.Added;
_Entry(model).State = EntityState.Detached;



سلام علی اقا


public bool Edit(Slider model)
{
try
{
_db.Entry(model).State = EntityState.Modified;
_db.SaveChanges();
return true;
}
catch (Exception exception)
{
var ex = exception.Message;
return false;
}
}




public Slider FindById(Guid? id)
{
var model= _db.Sliders.Find(id);
return model;
}


وقتی در یک action هر دوتا رو همزمان استفاده کنم بهم این ارور رو میده.

ali_md110
پنج شنبه 01 فروردین 1398, 15:52 عصر
سیستم رهگیری ef نسبت به متد find حساس نیست چون find فقط یک واکشی هست و با متد find داده ای در حال ویرایش و اضافه و حذف نیستیم




Attach را جهت ویرایش بکار ببرید{
_db.Sliders.Attach(model);
_db.Entry(model).State = EntityState.Unchanged;

_db.SaveChanges();