PDA

View Full Version : اپدیت کردن فیلدی که کلید اصلی است با استفاده از دستورات EF در سی شارپ



1000net
دوشنبه 18 اسفند 1393, 21:50 عصر
سلام دوستان عزیزم
من برای اپدیت یک فیلد از جدول که کلید اصلی است از کدهای زیر استفاده کردنم که با مشکل روبرو شدم و ارور میده:


var query = (from F in mydb.groupkalas where F.gid == gidedite select F).FirstOrDefault();
query.groupname = txtname.Text.ToString();
mydb.SaveChanges();
MessageBox.Show("ویرایش اطلاعات با موفقیت انجام شد");

ارور:


System.InvalidOperationException: The property 'groupname' is part of the object's key information and cannot be modified.
at System.Data.Objects.EntityEntry.VerifyEntityValueI sEditable(StateManagerTypeMetadata typeMetadata, Int32 ordinal, String memberName)
at System.Data.Objects.EntityEntry.GetAndValidateChan geMemberInfo(String entityMemberName, Object complexObject, String complexObjectMemberName, StateManagerTypeMetadata& typeMetadata, String& changingMemberName, Object& changingObject)
at System.Data.Objects.EntityEntry.EntityMemberChangi ng(String entityMemberName, Object complexObject, String complexObjectMemberName)
at System.Data.Objects.EntityEntry.EntityMemberChangi ng(String entityMemberName)
at System.Data.Objects.ObjectStateEntry.System.Data.O bjects.DataClasses.IEntityChangeTracker.EntityMemb erChanging(String entityMemberName)
at System.Data.Objects.DataClasses.EntityObject.Repor tPropertyChanging(String property

SabaSabouhi
سه شنبه 19 اسفند 1393, 01:35 صبح
سلام
بعضی وقت‌ها باید به جای پاسخ به بعضی پرسش‌ها، پرسش دیگری رو مطرح کرد.
دوست عزیز، این هم یکی از همون موارده. چرا شما می‌خوای کلید اصلی رو ویرایش کنی؟

نه این که این کار ممنوع باشه، اما این کار متداول نیست.
کلید اصلی صرفاً باید کلید اصلی باشه، و نه محمل اطلاعات جدول.
به ویژه که به نظر می‌رسه شما کلید ترکیبی داری، یعنی دو یا چند ستون رو با هم کلید کردی، که این هم متداول نیست.

سعی کن کلید اصلی فقط Id باشه که معمولاً Identity هم هست. حالا اگه لازمه که مثلاً یک فیلد دیگه، یا چند فیلد دیگه یگانه باشن،
روش این کار کلید کردنشون نیست. بلگه Unique Index هست.

صبا صبوحی