PDA

View Full Version : join سه جدول در Entity Framework



phpphp7
شنبه 26 اردیبهشت 1394, 23:52 عصر
سلام
من چطوری باید دستور Join را در جدول Reserve طبق عکس زیر ، با Entity Framework بنویسم ؟

http://up.vbiran.ir/uploads/28403143180720336453_key.pngممنون

danialafshari
یک شنبه 27 اردیبهشت 1394, 00:39 صبح
با سلام
http://stackoverflow.com/questions/21051612/entity-framwork-join-3-tables
موفق باشید

phpphp7
یک شنبه 27 اردیبهشت 1394, 16:28 عصر
با سلام
http://stackoverflow.com/questions/21051612/entity-framwork-join-3-tables
موفق باشید
سلام
مثالش رو قبلا دیده بودم اما یکم پیچیده هست !! یکم قاطی هستش !

SabaSabouhi
دوشنبه 28 اردیبهشت 1394, 08:06 صبح
سلام


var list = dbContext.Reservation
.Join ( dbContext.book, r=>r.BookId, b=>b.BookId, ( r, b)=> new { Reservation = r, Book = b } )
.Join ( dbContext.Person, x=>x.Reservation.PersonId, p=>p.PersonId, ( x, p )=> new { x.Reservation, x.Book, Person = p })
.ToList();

به همین سادگی

صبا صبوحی

phpphp7
پنج شنبه 31 اردیبهشت 1394, 00:55 صبح
سلام


var list = dbContext.Reservation
.Join ( dbContext.book, r=>r.BookId, b=>b.BookId, ( r, b)=> new { Reservation = r, Book = b } )
.Join ( dbContext.Person, x=>x.Reservation.PersonId, p=>p.PersonId, ( x, p )=> new { x.Reservation, x.Book, Person = p })
.ToList();

به همین سادگی

صبا صبوحی
سلام خیلی ممنون

آقا من یکم گیج شدم .

من الان میخوام یه چیزی مثل عکس زیر داشته باشم :

http://up.vbiran.ir/uploads/45026143215672740203_entity.png

یعنی تو درج ===>> فقط آی دی رزو ، آی دی کتاب ، آی دی افراد و تاریخ ثبت بشه

اما در نمایش ===>> مشخصات ترکیبی هم نمایش داده بشه.

یعنی یه جورایی به تمامی فیلد های همه جدول ها دسترسی داشته باشم

الان کدی که شما ایجاد کردید رو باید چیکار کنم ؟

ali_md110
پنج شنبه 31 اردیبهشت 1394, 03:34 صبح
از متد include استفاده کنید در واقع eager loading میشه یعنی لود اطلاعات وایسته بهم
اگر یک متد داشته باشیم برای لود رزروها :



public IList<Reservation> GetAllReserve()
{
return context.Reservations.Include(x => x.Person).Include(x=> x.Book).ToList();
}


منظور از context میشه دیتاکانتست شما و Reservations هم میشه موجودیت جدول رزرو کردن
حالا اگر این لیست فراخوانی کنید یا بایند کنید به یک دیناگراید اطلاعات جند جدول نشون داده میشه
اگر خواستید فبلد نام کتاب رو در یک ستون دیتاکراید ببینید باید هنکام بایند کردن بنویسید Book.name

phpphp7
پنج شنبه 31 اردیبهشت 1394, 10:38 صبح
از متد include استفاده کنید در واقع eager loading میشه یعنی لود اطلاعات وایسته بهم
اگر یک متد داشته باشیم برای لود رزروها :



public IList<Reservation> GetAllReserve()
{
return context.Reservations.Include(x => x.Person).Include(x=> x.Book).ToList();
}


منظور از context میشه دیتاکانتست شما و Reservations هم میشه موجودیت جدول رزرو کردن
حالا اگر این لیست فراخوانی کنید یا بایند کنید به یک دیناگراید اطلاعات جند جدول نشون داده میشه
اگر خواستید فبلد نام کتاب رو در یک ستون دیتاکراید ببینید باید هنکام بایند کردن بنویسید Book.name

سلام
به جای اون contex باید نام مدل EF رو بنویسم ؟

libraryEntities2 entiti = new libraryEntities2();

با ارور زیر رو به راه شدم

نام جدول رزو ، LibReserve هست.


http://up.vbiran.ir/uploads/516114321921748125_contex.png

ali_md110
پنج شنبه 31 اردیبهشت 1394, 13:59 عصر
اگر Navigation Property هاتون توی LibReserve تعریف شده باشه نباید مشکلی باشه جون متد Include روی navigation property قابل انجام هست شاید هم using System.Data.Entityاشکال داشته باشه و اضافه نشده به لیست رفرنس کلاستون

davidrobert
پنج شنبه 31 اردیبهشت 1394, 14:39 عصر
برای ساخت join از این دستور میتونی استفاده کنی و هر چند تا خواستی جون بسازی و ستونی های مورد نظرت رو نمایش دهی.
var q = from tblAshkhasGerTejare in db.Tbl_Ashkhas_Ger_Tejare
join tblashkhasTeajre in db.Tbl_Ashkhas_Tejare on tblAshkhasGerTejare.AGT_CAT_Code_AshKhas_Tejare equals tblashkhasTeajre.AT_CAT_Code_AshKhas_Tejare
select new
{
tblAshkhasGerTejare.AGT_ID,
tblAshkhasGerTejare.AGT_CAGTF_Code_Ashkhas_Ger_Tej are_Foroshande,
tblAshkhasGerTejare.AGT_Name_F,
tblAshkhasGerTejare.AGT_Last_F,
tblAshkhasGerTejare.AGT_CAGTK_Code_Ashkhas_Ger_Tej are_Kheredar,
tblAshkhasGerTejare.AGT_Name_KH,
tblAshkhasGerTejare.AGT_Last_Kh,
tblAshkhasGerTejare.AGT_CAT_Code_AshKhas_Tejare,
tblashkhasTeajre.AT_Noye_Sherkert,
tblashkhasTeajre.AT_Name_Sherket,
tblashkhasTeajre.AT_Name_Moder,
tblAshkhasGerTejare.AGT_Date,
tblAshkhasGerTejare.AGT_Time,
};


فقط کافی هستش به این صورت دستور رو بنویسید برای هر join که اطلاعات رو نمایش بدی.
join tblashkhasTeajre in db.Tbl_Ashkhas_Tejare on tblAshkhasGerTejare.AGT_CAT_Code_AshKhas_Tejare equals tblashkhasTeajre.AT_CAT_Code_AshKhas_Tejare

phpphp7
پنج شنبه 31 اردیبهشت 1394, 16:46 عصر
اگر Navigation Property هاتون توی LibReserve تعریف شده باشه نباید مشکلی باشه جون متد Include روی navigation property قابل انجام هست شاید هم using System.Data.Entityاشکال داشته باشه و اضافه نشده به لیست رفرنس کلاستون
سلام
using نداشت . گذاشتم درست شد

برای اینکه بتونم به دلخواه ، فیلد هایی که میخوان تو دیتا گرید ویو نمایش داده بشه رو خودم انتخاب کنم باید چیکار کنم ؟

کد زیر رو گذاشتم اما محتویات عکس زیر رو نشون داد :



datagridview1.datasource = context.Reservations.Include(x => x.Person).Include(x=> x.Book).ToList();

یا
datagridview1.datasource= GetAllReserve();




http://s3.picofile.com/file/8189593734/contex.png

باز هم محتویات جدول LivReserve رو نشون میده .

مدل EF :
http://s3.picofile.com/file/8189594368/ef.png

ali_md110
پنج شنبه 31 اردیبهشت 1394, 20:52 عصر
اگر به دیتاگرایدتون نگاه کنید ستونهایی با عنوان book یا person اضافه شده که مقدارش نوشته System.Data.Entity........
این همون جایی هست که شما باهاش کار دارید اینها navigation property های شما یا جداول تلفیق شذه هستن که فقط کافی هست برای نمایش فیلد مورد نطر از این navigation ها بنویسید book.name
ببینید وقتی با include موجودیتهاتون رو باهم تلفیق میکنید دیگه کاری نداره خاصیت AutoGenerateColumns دیتاگراید ویو برابر False کنید و به دیتاگرادیتون با کلیک راست روی اون ستون از نوع تکست باکس یا هر نوع دلخواه دیگه اضافه کنید و از روش Binding در Winform برای نمایش استفاده کنید

davidrobert
جمعه 01 خرداد 1394, 08:20 صبح
این پروژه به روش join در Ef هستش به همراه اسکریپت دیتابیس که مشاهده میکنید تصاویر رو.

131491
این تصویر جون شدن دیتابیس هستش. و این تصویر نمایش اطلاعات جون شدن هستش.
131492
و این هم فایل ارتباط بر قرار کردن با فیلد های جدوال با join ولی برای اینکه اجراش رو ببینی فایل اسکریپت ایجاد کن و داده های مورد نظر رو از جدوال اول نام کالا بعد قیمت کالا و آخر سر جدوال قرض وارد کنید تا اطلاعات خودتون رو ببنید.
http://uplod.ir/4xpgbmuz3rlt/ShowInformationJoin.zip.htm

h.gheidrlou
شنبه 09 خرداد 1394, 23:40 عصر
131819
من میخوام در کد سرچ این کد را اجرا کنم نمیشه
درصورتیکه شماره مشتری کلید اصلی باشد میخوام ام نام وفامیل را ازجدول مشتری و بقیه اطلاعات را از جدول دوم بخونه
چکارش کنم؟