من در زمان ویرایش که از کد زیر استفاده می کنم :
_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.
تشکر
احتمالا یک 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;
سلام
مرسی از لطفتون . بله جواب داد و مشکل حل شد .
من فقط دلیلش رو کامل متوجه نشدم . می شه بیشتر توضیح بدید . به طور مثال من الان در حال ویرایش اخبار هستم . این مشکل در چه صورتی و برای چه داستانی رخ می دهد .
تشکر
خبری که میخواهید ویرایش کنید در Context شما وجو داشته است، زمانی که از Find استفاده می کنیم Entity دریافت شده درون context کش می شود.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)