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

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

کاربر سایت

hamoonsh

عضویت از 1396/06/29

مشکل در آپدیت کردن سطر موجود

  • چهارشنبه 3 آبان 1396
  • 23:14
تشکر میکنم

سلام
من از کد زیر برای save کردن و update  کردن دیتا استفاده میکنم.

public bool SaveSlider(Slider slider)
        {
            try
            {
                if (slider.SlideID > 0)
                {
                    //==== UPDATE ====

                    DB.Sliders.Attach(slider);
                    DB.Entry(slider).State = EntityState.Modified;
                }
                else
                {
                    //==== INSERT ====
                    DB.Sliders.Add(slider);
                }

                DB.SaveChanges();
                return true;
            }
            catch (System.Exception)
            {

                return false;
            }


        }

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

"Attaching an entity of type 'DataAccess.Slider' 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

  • چهارشنبه 3 آبان 1396
  • 23:41

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

کاربر سایت

ictboy

عضویت از 1393/08/07

  • سه شنبه 22 اسفند 1396
  • 11:31

سلام

من یه مشکل مشابه دارم که مرتبط با عنوان ایم تاپیک هست و بخاطر همین مجدد تاپیک درست نکردم.

من یه برنامه بصورت entity framework code first دارم می نویسم

من یه جدول دارم که قرار فقط یک رکورد داشته باشه(برای تنظیمات و یک سری اطلاعات پایه)

در زمان طراحی مدل مجبوراً یک فیلد رو از نوع کلید مشخص کردم چون اگه مشخص نکنم entity framework خطا میگره و اجازه ایجاد دیتابیس رو بهم نمی داد.

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

مشکل اینجاست که میخوام مقدار فیلدی که کلید هست رو تغییر بدم ولی انجام نمی شه و پیغام زیر رو میده 

The property 'ID' is part of the object's key information and cannot be modified.

فیلد ID فقط کلید هست و بصورت identity نیست. رکورد یا مقدار دیگه ای هم تو جدول نیست که بخواد بخاطر تداخل یا یونیک نبودن اشکال داشته باشه.

راه حل چیه؟ برای فیلدهای کلید چطور باید ویرایش انجام داد.

متشکرم

کاربر سایت

سهیل علیزاده

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

  • سه شنبه 22 اسفند 1396
  • 12:02

ef فیلد موردنظر یعنی id را کلید اصلی درنظر می گیرد و شما نمی توانید آن را تغییر دهید. برای این کار میتوان ابتدا رکورد قبلی حذف کرده و رکورد جدید را اضافه کنید.

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

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

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

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