LINQ To Entities
در بخشهای قبلی در مورد ساختار مدل صحبت کردم و گفتم که یک مدل چگونه ساخته می شود . همچنین بیان کردم که برای انجام پرس و جو چند روش وجود دارد . در این بحش کمی در مورد Linq To Entities صحبت خواهم کرد ، البیته این بحث بسیار مفصل است که من با دادن لینکهای کاربردی شما را به ادامه آموزش Linq با مثال از سایت MSDN دعوت می کنم .
اکنون برای شروع برای اینکه با سایت MSDN هماهنگ باشیم ما با بانک اطلاعاتی Adventureworks کار می کنیم . که از این لینک می توانی دانلود کنید . یک پروژه console Application ایجاد کنید و مدل زیر را برای جدولهای Adress,Contact ,Product,saleorderDetail,SaleorderHeader از بانک اطلاعاتی ایجاد کنید
اکنون باید با استفاده از دستورات Linq برای Entites دستورات کویری بنویسیم . ابتدا دستور select
یادتان باشد در پروژه خودتان فضاهای نام زیر را حتما اضافه کنید .
پس می توانیم به تمام عناصر این کلاس دسترسی داشته باشیم . یکی از موجویتهای این کلاس همان موجویت جدول Product است . در سطر بعدی ما باید متغیری تعریف کنیم بصورت آرایه مانند به نام ProductsQuery که این متغیر بر اساس کویری linq مقدار می گیرد . حال کویری ما در کادر قرمز رنگ را مشاهده کنید می بینید که یک حلقه ای ایجاد کرده است که این حلقه for تمام عناصر جدول product موجود در مدل را بصورت یک کلکسیون قابل پیمایش در متغیر ProductsQuery بار گذاری می کند .و در نهایت حلقه foreach این متغیر قابل پیمایش را نمایش می دهد . خواهید دید که چگونه تمام عناصر جدول product نمایش داده می شوند .
Where
در کویری بالا ما تمام عناصر ستون name را بازیابی کردیم ، اکنون سوال این است که چگونه می توانیم عمل فیلتر را انجام دهیم ما می خواهیم فقط نام محصولاتی را نمایش دهیم که با که id آنها یعنی ProductId به فرض بزرگتراز 120 باشد برای این کار کافیست کویری موجودی در کادر قرمز رنگ را بصورت زیر تغییر دهیم .
Join
حتما در بانکهای اطلاعاتی با کویری مواجه بوده اید که از چندین جدول مرتبط ایجاد می شوند در linq این کار توسط دستور join انجام می شود .فرم کلی عبارت بصورت زیر است .
در اینجا منظور از variable همان متغیرها است که هر کدام نماینده یک جدول خواهند بود . اما collection ها منظور همان موجودیتها ی نشان دهنده جدول در بانک اطلاعاتی است . و سرانجا این دو موجودیت باید در یک فیلدی مشترک باشند . مثال زیر در مورد 2 جدول saleorderDetail , saleorderheader است .
در مثال بالا ابتدا جدول مبدا و مقصد رابطه ما توسط عبارت from , join مشخص شده است . سپس بعد از عبارت on باید مشخص کنیم که این جداول در کدام فیلد مشترک هستند و ارتباط بر اساس کدام فیلد است . سپس عبارت where اجرا شده است .
بحث در این زمینه بسیار مفصل است که در این مختصر نمی گنجد بنده برای ایجاد هماهنگی در نوشته های با سایت Msdn مثالهایی را از آن سایت آوردم برای پی گیری بیشتر مثالها می تونید از سایت منبع بقیه مثالهای آموزشی در این مورد را پی گیری کنید .
با تشکر
ادامه دارد...
با سلام
ممنونم از مقالاتتون
من برای پروژه هام از Entity Framework استفادم میکنم
میخواستم بدونم میشه در برنامه های چند لایه هم از Entity Framework استفاده کرد
اگر میشود Entity Framework در ژه لایه ای قرار باید قرار بگیرد؟
بله می شود البته Entity Framework در لایه داتا قرار می گیرد و شما می تواندی لایه ها دیگر را طراحی کنید همچنین می توانید لایه ای را برای انجام عملیات تعریف کنید تحت عنوان لایه data البته طبق تحقیق من بهترین روش در تفکیک لایه های استفاده از الگوی chain of Reponsibility است که ان شا الله در آینده در مورد آن توضیح خواهم داد .
بابت آموزشتون بسیار سپاسگزارم..باید بگم وبلاگ شما تنها مرجع فارسی مناسب در زمینه entity framewiork هست ..
خیلی استفاده کردم..