PDA

View Full Version : بایند کردن داده از دیتابیس به تکس باکس باentity framework



elahe.9817
سه شنبه 15 مرداد 1392, 11:01 صبح
var search = from u in database.TBL_sabtworkersid where (u.name == txtname.Text && u.lastname==txtlname.Text) select u;


TBL_sabtworkersid table = new TBL_sabtworkersid();
{
if (search.Count() != 0)
{
lblid.Text = table.ID.ToString();
lbllname.Text = table.lastname;
lblname.Text = table.name;

}
else
{
MessageBox.Show("موردی یافت نشد");
}
http://barnamenevis.org/clear.gif (http://barnamenevis.org/private.php?do=newpm&pmid=531634)





ایراد این تیکه کد چیه؟ظاهرا همه چیزش درسته ارور هم نمیده شرط else رو هم اجرا میکنه یعنی اگه فیلدی پیدانکرد پیغام رو نشون میده ولی اگه شرط درست باشه داده ها رو از دیتابیس نمیتونه بریزه تو تکس باکس ها یعنی فیلد خالی بر میگردونه
ممنون میشم اگه کمکم کنید..............

gwbasic
سه شنبه 15 مرداد 1392, 12:21 عصر
ببینید این سوال شما نشون می ده که یکسری مفاهیم رو بدرستی متوجه نشدید.
1- Binding در اینجا شما اصلا از Binding استفاده نکردید برای یادگیری می تونید به آموزش Databinding من و پروژه ثبت سفارشات که در امضای من هست مراجعه کنید
2- نحوه اجرای کوئری با استفاده از EF و گرفتن نتیجه آن از database که برای این مورد هم می تونید به آموزش نحوه اجرای پرس و جو که در سایت آقای نصیری گذاشتم مراجعه کنید به آدرس زیر:
نوشتن پرس و جو (http://www.dotnettips.info/post/1403/%D9%86%D9%88%D8%B4%D8%AA%D9%86-%D9%BE%D8%B1%D8%B3-%D9%88-%D8%AC%D9%88-%D8%AF%D8%B1-entity-framework%E2%80%8C-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-linq-to-entity-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84)
که البته در سه قسمت هست
3- مفاهیم شی گرایی که می تونید به آموزش سی شارپی که در سایت گذاشتم و در امضام هست مراجعه کنید

حالا مشکلاتتون:
در خط اول یک کوئری تعریف کردین. این خط صرفا یک دستور است و هیچ چیزی را بر نمی گرداند برای اجرای آن باید از متدهای مختلفی از جمله ToList و FirstOrDefault و ... استفاده کنید که انتخاب اینها به نیاز شما بر می گرده اگر خروجی شما یک مقدار هست بهتره از FirstOrDefault استفاده کنید.
در خط دوم شما یک شی ساخته اید و مسلما مقداری در آن وجود ندارد و سپس آنها را در کنترل های فرمتون ریختید که مشخصا چیزی نمایش داده نمی شود چون این شی شما هیچ ربطی به کوئری شما ندارد

بنابراین کد شما بدون Binding به صورت زیر می باشد


var sabtworkersid= (from u in database.TBL_sabtworkersid
where (u.name == txtname.Text && u.lastname==txtlname.Text)
select u).FirstOrDefault();


if (sabtworkersid != null)

{

lblid.Text = sabtworkersid= .ID.ToString();

lbllname.Text = sabtworkersid= .lastname;

lblname.Text = sabtworkersid= .name;

}

else

{

MessageBox.Show("موردی یافت نشد");

}


حتما وقت برای مواردی که اشاره کردم بذارید

موفق باشید