PDA

View Full Version : مبتدی: قابل تغییر نبودن کلید اصلی در ٍEntity FrameWork



EBRAHIMIEKOKDARAGHI
سه شنبه 22 آبان 1397, 08:50 صبح
با سلام خدمت اساتید محترم
من از Entity FrameWork استفاده می کنم مشکلم اینکه کلید اصلی رو با دستورات لینک نمی تونم update کنم لطفا راهنمایی کنید

db = new Net_DbEntities();
var data = db.cala.Find(Code);
data.Code = txt_Code.Text.Trim();
data.Name = txt_Name.Text.Trim();
data.Unit = txt_unit.Text.Trim();
db.SaveChanges();

رامین مرادی
سه شنبه 22 آبان 1397, 11:53 صبح
مگه کلید اصلی رو هم آپدیت میکنن؟!!! خب اینو تغییر بدید همه چی بهم میخوره که. درضمن اگه اتواینکریمنت باشه که بهتون اجازه تغییر نمیده. اگه هم نیست حتما تکراری دارید وارد میکنید. حالا خطایی که دریافت میکنید چی هست؟

EBRAHIMIEKOKDARAGHI
سه شنبه 22 آبان 1397, 16:25 عصر
با سلام و خسته نباشید
حرف شما رو قبول دارم
وقتی که بخوایم یه جدول رو برای اولین بار مقدار دهی کنیم و این جدول فعلا هیج دیتای وابسته ای نداشته باشه که دیتایی رو بهم بریزه امکان داره اشتباهی مقداری رو وارد کنی ، یعنی حتما باید رکورد رو حذف کنی ؟
ضمنا
اتواینکریمنت هم نیست

رامین مرادی
چهارشنبه 23 آبان 1397, 09:11 صبح
نمیدونم هدفتون از اتو اینکریمنت قرار ندادنش چیه ولی خب اگه دیتای وابسته ای نداشته باشه میشه تغییر داد. باید فورمت صحیحش و عدم تکراری بودنش حتما چک بشه.
من انتیتی کار نکردم اما یادمه یه جا خوندم تو حالت کد فرست انتیتی خودش اتوماتیک اون فیلدی که آیدیهست رو تبدیل به کلید اصلی از نوع اتو اینکریمنت میکنه.
یه نکته مهم که خوندم این بود: بروزرسانی کلید اصلی در انتیتی کار صحیحی نیست. با این کار هوییت شی تغییرمیکنه و کپی اطلاعات وکپی حافظه در همگام سازی کار بسیاری مشکلی میشه .برای همین مجاز نیست.
باز شما خطایی که صادر میشه رو اینجا بزارید تا بدونیم مشکل چیه. اینجوری بدون نوشتن خطا اصلا نمیشه حدس زد مشکل چیه?!!
بهرحالاین لینک هارو هم مطالعه بفرمایید:

https://stackoverflow.com/questions/1367751/update-primary-key-value-using-entity-framework