ورود

View Full Version : ویرایش فیلد کلید



Davood_amega
یک شنبه 15 شهریور 1388, 12:08 عصر
فیلد UnityNumber که تو جدول Customer کلید هست رو می خوام تغییر بدم ولی Error زیر رو میده:






Unhandled exception has occurred in your application. If you click
Continue, the application will ignore this error and attempt to continue. If
you click Quit, the application will close immediately.
Unhandled exception has occurred in your application. If you click Continue, the application will ignore this error and attempt to continue.
If you click Quit, the application will close immediately.
Value of member 'UnityNumber' of an object of type 'Custumer' changed.
A member defining the identity of the object cannot be changed.
Consider adding a new object with new identity and deleting the existing
one instead.


ضمنا فیلد به صورت Identityتعریف نشده.
مي خوام اطلاعات رو به صورت دستي وارد كنم واسه همين نمي خام Identity باشه.

saeid69
یک شنبه 15 شهریور 1388, 12:18 عصر
میشه دستوری که نوشتی رو هم بذاری؟
فکر میکنم اشکال از دستورته

Davood_amega
یک شنبه 15 شهریور 1388, 12:28 عصر
دستور خاصی ننوشتم چون Textbox به فيلد متصل هست وموقع ثبت تغييرات وقتي دستور submitchange() رو اجرا ميكنه اون خطا رو ميده.

Davood_amega
یک شنبه 15 شهریور 1388, 17:34 عصر
کسی نیست راهنماییم کنه؟
Identity رو هم فعال کردم بازم مشکلم برطرف نشد!!!!!!

محمد سلیم آبادی
دوشنبه 16 شهریور 1388, 01:05 صبح
خطا به دلیل این است که کلید اصلی که از نوع identity است را نمی توانید تغییر دهید و در متن خطا ذکر کرده است " یک آبجکت با یک identity جدید درج کنید و سطر قبلی را حذف کنید"

حتی مقادیر ستون های identity را نیز می توانید به طور دستی وارد کنید باید از دستور set identity_insert on استفاده کنید.

mn_zandy63
دوشنبه 16 شهریور 1388, 06:44 صبح
چیزی که توی خطای تو نوشته این نیست که فیلدت Identity هست.
در واقع ایراد اینجاست که فیلد کلید رو نمیتونی تغییر بدی.
یا کلا design دیتابیست رو عوض کن و فیلد دیگری رو برای کلید تعریف کن. چون اصولا فیلد کلید رو فیلدی تعریف میکنند که قرار نیست تغییر کنه.
و یا اگه نمیخوای طراحیتو عوض کنی بهترین راه اینه. رکورد مورد نظرت رو حذف کن و رکورد جدیدی با همون اطلاعات و کلید جدید ثبت کن.
متوجه شدی؟

Davood_amega
دوشنبه 16 شهریور 1388, 09:59 صبح
set identity_insert on یک دستور Linq است ، به چه صورت است. برنامه ام به این صورت است که اون فیلد کلید رو کاربر انتخاب می کنه و قبل از ذخیره سازی اعتبارسنجی هم می شود.ضمنا اون Error وقتی که Identity غیرفعال هم هست میاد.

mn_zandy63
دوشنبه 16 شهریور 1388, 10:18 صبح
خب من که بهت گفتم ربطی به Identity نداره.
شما با این دستور میتونید مقدار دهی کنید فیلد Identity رو موقع Insert.
اما به هر حال نمیتونید فیلد کلید رو Update کنید.

Amir Oveisi
دوشنبه 16 شهریور 1388, 14:56 عصر
اصولا فیلدی که کلید تعریف میشه نباید تغییر بکنه حتی اگر امکانش فراهم باشه.
پس اگر واقعا لازم به این کار هست حتما توصیه میکنم که طراحی db تون رو تغییر بدین.