PDA

View Full Version : Update در Linq ...



baran_programmer
دوشنبه 07 شهریور 1390, 18:33 عصر
با سلام

من برای ویرایش یک رکورد در Linq To Sql با استفاده از کد زیر ابتدا رکورد مورد نظر را پیدا کردم سپس روی رکورد پیدا شده تغییرات لازم را اعمال کردم.


DataClassesDataContext db = new DataClassesDataContext();
var q = (from p in db.Messages
where p.Message_Id == Convert.ToInt16(Request.QueryString["ID"])
select p).Single();
q.ReadMessage = "yes";
db.SubmitChanges();

ولی نمیدونم چرا پس از اجرا فیلد مورد نظر توی دیتا بیس تغییر نمیکنه؟

dontspeak
دوشنبه 07 شهریور 1390, 21:30 عصر
دوست عزیز کدتون که ظاهرا درسته
یه break point بزارید ببیند اصلا به اینجای کار میرسه شاید اصلا این قسمت به اجرا شدن نرسه

baran_programmer
سه شنبه 08 شهریور 1390, 00:17 صبح
breakpoint هم گذاشته بودم q مقدار میگیره حتی q.readmessage هم مقدار مورد نظر رو میگیره اما توی بانک تغییری نمیکنه یعنی فکر میکنم دستور db.submitchange() عمل نمیکنه. نمیدونم آیا واسه Update کار دیگه ای هم لازمه بکنم؟
یه جا خوندم باید واسه آپدیت خصوصیت Inheritance Modifier فایل dbml رو sealed کنم این کارم کردم اما نشد.
لطفا کمک کنید.در مورد این خصوصیتم اگه میدونین توضیح بدید؟

hjran abdpor
سه شنبه 08 شهریور 1390, 01:27 صبح
با سلام.
دوست عزیز شما این مفاله را بخونید احتمالا مشکلتون حل بشه.
http://delshad.ir/article.aspx?code=f280288c-4814-4ce6-9f91-de64da7f38c1

sabagood
سه شنبه 08 شهریور 1390, 01:42 صبح
سلام
باید پس ازتغییرات شی مورد نظر رو در دیتابیس دخیره مثلا :
db.esme table.insertonsubmit(شی مورد نظر)
بعد ثبت تغییرات :
db.submitchange()

baran_programmer
سه شنبه 08 شهریور 1390, 11:31 صبح
ممنون دوستان.
مشکلم حل شد.:لبخند:
کد درست بود فقط جدولی که میخواستم اطلاعات رو توش Update کنم کلید اصلی نداشت که حتما باید داشته باشه تا Update انجام بشه.
گفتم دلیلشم بگم که اگه بقیه دوستان به همچین مشکلی بر خوردن بدونن واسه چی بوده.

Itist82
چهارشنبه 16 شهریور 1390, 23:32 عصر
من درست عين کد موجود در پست اول اين تاپيک رو نوشتم، جدولم هم توي پايگاه داده کليد اصلي داره، اما به هيچ وجه آپ ديت نمي شه. البته مشکل من با ايشون فرق داره، براي من در کد زير، خط سوم ( که همان کد پست اول است اگر خط حاوي Single از کوئري جدا شود) موقع انتساب خروجي Singleبه يک متغير ديگر مي گويد
Specified cast is not valid
در حالي که همه متغير ها با var تعريف شدن. ضمنا چک کردم که کوئري دقيقا يک سطر بر مي گردونه
کد من شبيه اينه:

DataClassesDataContext db = new DataClassesDataContext();
var q = (from p in db.Messages
where p.Message_Id == Convert.ToInt16(Request.QueryString["ID"])
select p);
var m= q.Single();
m.ReadMessage = "yes";
db.SubmitChanges();




هر چي سرچ کردم همه نحوه آپ ديت رو به همين شکل گفته شده در اين تاپيک توضيح دادن اما کار نمي کنه!! البته Insert من داره کار مي کنه.:عصبانی++:

Itist82
پنج شنبه 17 شهریور 1390, 12:14 عصر
کسي نمي دونه راه حلش چيه؟

baran_programmer
پنج شنبه 17 شهریور 1390, 16:30 عصر
خصوصیت Inheritance Modifier فایل dbml رو sealed کنید شاید جواب بده. من اینکارو کردم البته با کد پست اول، آپدیت انجام شد.
حالا چه اصراری دارید خط حاوي Single از کوئري جدا باشه؟
اینکاری که گفتم رو امتحان کنید ببینید جواب میده.

Itist82
پنج شنبه 17 شهریور 1390, 22:14 عصر
خصوصیت Inheritance Modifier فایل dbml رو sealed کنید شاید جواب بده. من اینکارو کردم البته با کد پست اول، آپدیت انجام شد.
حالا چه اصراری دارید خط حاوي Single از کوئري جدا باشه؟
اینکاری که گفتم رو امتحان کنید ببینید جواب میده.

ممنونم دوست عزيز. اما اين فايل که مي گيد اصلا کجا هست؟
من اصراري ندارم که اون خط جدا باشه. اول هم سر هم نوشته بودم اما ديدم خطا مي ده، جدا کردم ببينم خطا دقيقا از کجاست که ديدم اونجا داره خطا مي گيره.

baran_programmer
پنج شنبه 17 شهریور 1390, 22:28 عصر
این همون فایل Linqاست که ایجاد کردیم و جداولمون رو داخل اون اضافه میکنیم، بطور پیشفرض اسمش DataClasses.dbml است که داخل پوشه App_Code از پروژه تون قرار میگیره.

Itist82
جمعه 18 شهریور 1390, 12:19 عصر
این همون فایل Linqاست که ایجاد کردیم و جداولمون رو داخل اون اضافه میکنیم، بطور پیشفرض اسمش DataClasses.dbml است که داخل پوشه App_Code از پروژه تون قرار میگیره.
من تازه کار کردن با لينک رو شروع کردم. قبلا که با ADO.Net کار مي کردم هميشه توي کد باهاش کار مي کردم و از ابزارهاي ويژوال استفاده نمي کردم. الان هم همين جوري دارم با لينک کار مي کنم. فايلي که مي گيد با ابزار يا کنترل ويژوالي خاصي ايجاد مي شه؟ من همچين فايل و فولدري توي برنامه ام ندارم. همه جدول ها مو هم دارم توي کلاس هاي مجزايي تعريف مي کنم.
بازم مي شه کاري کرد؟

Itist82
شنبه 19 شهریور 1390, 10:09 صبح
ممنون مي شم اگه دوستاني در مورد مشکل من راه حل بلندن بگن.

mojtaba69
جمعه 07 بهمن 1390, 19:50 عصر
baran_programmer ممنونم از شما ، منم همچین مشکلی داشتم ! یک دنیا تشکر