مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

jaykob

عضویت از 1393/03/30

دلیل خطای Attaching an entity of type '' failed در ویرایش اطلاعات

  • دوشنبه 23 مرداد 1396
  • 00:07
تشکر میکنم



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

_db.Entry(MyModel).State = EntityState.Modified;
_db.SaveChanges();

از این کد بارها استفاده کردم و همه چیز مرتب بوده . اما داخل یک پروژه هر چی تلاش می کنم از این کد برای ویرایش استفاده می کنم خطای زیر رو می گیریم . سرچ هم کردم تقریبا هر چی راهکار هم تست کردم همین خطا هستش . از ef code first و flunet api استفاده کردم . ممنون می شم راهنمایی کنید:

Attaching  an entity of type '' 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.
تشکر

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • دوشنبه 23 مرداد 1396
  • 00:21

احتمالا یک Entity در Local شما وجود دارد. ابتدا بررسی کنید آیا در local یک Entity از نوع Entity که درحال انجام عملیات برروی آن هستید وجودارد.

db.Set<MyModel>().Local

به این صورت عمل کنید:

var local = yourDbContext.Set<YourModel>()
                         .Local
                         .FirstOrDefault(f => f.Id == yourModel.Id);
if (local != null)
{
  yourDbContext.Entry(local).State = EntityState.Detached;
}
yourDbContext.Entry(applicationModel).State = EntityState.Modified;

کاربر سایت

jaykob

عضویت از 1393/03/30

  • دوشنبه 23 مرداد 1396
  • 10:00

سلام

مرسی از لطفتون . بله جواب داد و مشکل حل شد .

من فقط دلیلش رو کامل متوجه نشدم . می شه بیشتر توضیح بدید . به طور مثال من الان در حال ویرایش اخبار هستم . این مشکل در چه صورتی و برای چه داستانی رخ می دهد .

تشکر

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • دوشنبه 23 مرداد 1396
  • 10:34

خبری که میخواهید ویرایش کنید در Context شما وجو داشته است، زمانی که از Find استفاده می کنیم Entity دریافت شده درون context کش می شود.  

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)