PDA

View Full Version : سوال: login و واکشی اطلاعات کاربر توسط EF



mamadcity
یک شنبه 27 مرداد 1392, 00:01 صبح
سلام دوستان
بنده چند روزی هست رو این بخش گیر کردم ... من یه دیتابیس دارم که از طرق EF به اون متصلم ... و یه فرم لوگین هم دارم که از طریق کد زیر یوزر و پس رو چک می کنم
var q = (from p in db.tbl_lgn
where p.lgn_user == textBox1.Text && p.lgn_pass == textBox2.Text
select p).Any();

if (q)
{
main mn = new main();
mn.Show();
this.Hide();
}
else
{
MessageBox.Show(@"error");
}
حالا این تیبل من دارای این رکود هاست

lgn_id
lgn_name
lgn_user
lgn_pass
lgn_email
lgn_role

من تو چک کردن یوزر و پس مشکلی ندارم مشکله من اینه که می خوام هنگام لاگین شدن ستونه lgn_role از رکورد رو چک کنه اگه admin بود تو فرم بعدی یک سری ویژگی های مخصوص ادمین فعال باشه اگر user بود اون ویژگی ها فعال نباشه ...! یه متغییر سراسر تعریف کردم ولی تو واکشی اطلاعات هنگام لاگین گیر کردم
دوستان بنده مبتدیم اگه میشه کمی واضح توضیح بدین ممنون

mousa1992
یک شنبه 27 مرداد 1392, 03:52 صبح
چرا از any استفاده کردی ؟ میدونستی که اگه هیچ رکوردی نداشته باشی true برمیگردونه ؟
بجای any از SingleOrDefault(); استفاده کن و میتونی به فیلدهای رکوردی که از جدولت بیرون کشیدی دسترسی داشته باشی - ینی بنویس q. و بعد از . میتونی هرکدوم از فیلدها دسترسی داشته باشی (آقا به نحوه جواب دادنم اعتراض شده از الان دیگه درست و کامل میگم :بامزه: )

در صورتی که از SingleOrDefault استفاده کردی باید شرط رو هم تغییر بدی چون دیگه مقدار bool برنمیگردونه و ی رکورد از جدولتو برمیگردونه که در واقع شما میتونی توی شرط بگی که اگه q!= null بود برنامه رو براش باز کن - در صورتی که رکوردی با یوزر و پس مورد نظرت وجود نداشت مقدار null برمیگردونه

موفق باشی

rezaei_y
یک شنبه 27 مرداد 1392, 10:48 صبح
دوست عزیز مطمئنی؟
میدونستی که اگه هیچ رکوردی نداشته باشی true برمیگردونه ؟