صفحه شخصی سید علا سبزپوش

برنامه نویس دات نت و sql_server --ریاضیات

صفحه شخصی سید علا سبزپوش

برنامه نویس دات نت و sql_server --ریاضیات

Entity Framework 4 part ۸

در بخش قبل گفتم که چند روش برای انجام کوئری بر EDM  وجود دارد. اما قبل از وارد شدن به مبحث کوئری ; لازم دانستم مفاهیمی دیگر را نیز بیان کنم .

شاید این پرسش برای خیلی ها مطرح شود که چرا برای نوشتن کوئری باید از چند روش استفاده کرد و کلا چرا این روشها معرفی شده است و تفاوت بین این روشها چیست ؟

من ترجیح دادم قبل از وارد شدن به مبحث کوئری کمی در مورد ساختار و نحوه انجام کوئریها صحبت کنم .

با توجه به پیشینه زبان  لازم دانستم مفاهیمی دیگر را نیز بیان کنم .

شاید این پرسش برای خیلی ها مطرح شود که چرا برای نوشتن کوئری باید از چند روش استفاده کرد و کلا چرا این روشها معرفی شده است و تفاوت بین این روشها چیست ؟

من ترجیح دادم قبل از وارد شدن به مبحث کوئری کمی در مورد ساختار و نحوه انجام کوئریها صحبت کنم .

با توجه به پیشینه زبان LINQ  برای مایرکروسافت ;  می توان نتیجه گرفت که هدف اصلی از ارایه LINQ TO Entities   در واقع توسعه ای برای این زبان است و امکانی برای برنامه نویسانی است که با این زبان سر و کار دارند.علاوه بر این استفاده از LINQ  مقادیر برگشتی کوئری بصورت جدولها و ردیف و ستون نیست .بلکه بصورت object  است .محدودیت زبان LINQ  در این است که فقط در زبانهای سی شارپ و vb.net  پشتیبانی می شود و برای سایر زبانهای دات نت قابل استفاده نیست . علاوه بر این به هنگام کامپایل باید به زبان متدی Query method  تبدیل شود تا برای CLR  قابل فهم باشد .

زبان Entity SQL  : این زبان بسیار شبیه به زبان T_SQL  است . با این تفاوت که این زبان می تواند با کلاسها و اشیا سروکار داشته باشد و به تبع آن از وراثت و ارتباطات بین کلاسها به خوبی پشتیبانی می کند. . در واقع ما به کمک Entity SQL  می توانیم همه به صورت شی گرا و هم بصورت داده ها رکوردی سطر و ستون ;  با بانک اطلاعاتی سروکار داشته باشیم .و این مهمترین دلیل برتری Entity Sql  بر زبان LINQ to Entity است .

 

در نهایت زبان Query Method  لایه ای پایینتر است ، چرا که فقط می تواند با با زبانهای بالا ترکیب شود و کویریهای بسیار قدرتمندتری را تولید کند . از مهمترین خصوصیت این روش خلاصه نویسی و استفاده از عبارتهای لامبدا است . .

اکنون به شکل زیر دقت کنید تا متوجه شوید که   وLINQ to Entities Entity Sql  چگونه با داده ها تعامل می کنند




همانطور که در شکل بالا می بینید . اگر بخواهیم با داده ها بصورت شی یا object  سر و کار داشته باشیم . با استفاده از زبان LINQ to Entities   و Entity SQL  ما می توانیم با شی object service  در تعامل باشیم . در این تعامل ما کاملا با کلاسها از جمله کلاس objectcontext  و کلاسها داده  data class  سر و کار داریم .

حال اگر به شکل بالا دقت کنید می بینید که  LINQ to Entites برای انجام کویری چه فرایندی را طی می کند . علاوه بر این   نمی تواند مستقیما به لایه EntityClientLINQ to Entites  دسترسی داشته باشد در حالی که  Entity SQL می تواند مستقیما با لایه  EntityClient دسترسی داشته باشید و داده ها را بصورت رکوردی و ستون و ردیف داشته باشد


EntityClient  چیست ؟ همانطور که در شکل بالا و در شکل پایین می بینید ، این لایه بسیار شبیه به لایه های Sqlclient ,OracleClient ,…. است. این لایه مدیریت رشته اتصال و command ها و غیره را کنترل و پردازش می کند .سرو کار کوئری در این لایه با داده ها بصورت شی و Object  نیست بلکه بصورت داده های ستونی و ردیفی است ، علاوه بر این این لایه با EDM  در ارتباط مستقیم است .



امیدوارم توانسته باشم فرق و ساختار کویریها را به خوبی بیان کنم

ادامه دارد ......

Entity Framework 4 part ۷

 Querying with the Entity Framework


قبل از آنکه در مورد کویری با مدل بحث کنیم بد نیست بدانیم که کویری های ما با کلاس مدل سروکار دارند لذا نیم نگاهی به کلاس سازنده مدل می اندازیم.

اگر کلاس مدل را باز کنید متوجه دو بخش عمده Context , entity  می شوید . در واقع کلاس اصلی سازنده مدل ما از کلاس objectcontext  ارث بری می کند .در شکل زیر نموداری کلی از کلاس را نشان می دهد .



به طور خلاصه می توان گفت که هر کلاس مدل دارای ساختار مشابه شکل فوق است . ما وقتی مدل خود را ایجاد می کنیم ، کلاس تشکیل شده بصورت عمده دارای دو object  است . 1- شی object context  و 2- شی Entity Type

ما در اجرای کویری عمدتا با این دو شی سر و کار خواهیم داشت .

 

Object Context   : اصلی ترین و مهمترین کلاسی که ما از آن استفاده می کنیم ، با ایجاد مشتقی از این کلاس ما کلاسی خواهیم داشت که رشته اتصال به بانک اطلاعاتی و سازنده های کلاس و حالت کلاس برای انجام اعمال تغییر و حذف و ثبت استفاده می شود .

 

Entity Type  : قسمت مهم دیگر است که از کلاس Entityobject  مشتق می شوند .از مهمترین کارهایی که این کلاس برای ما ارایه می دهد تعریف عناصر موجودیت و خصوصیتهای آنها و ارتباطات بین عناصر موجودیت و ...

 

اکنون که بطور خلاصه با دو کلاس آشنا شدیم ، چگونه می توانیم کویری برای مدل ایجاد کنیم ، کلا برای نوشتن کویری بر یک مدل ما سه نوع روش کویری داریم .

 

1-LINQ to Entities  : در این روش ما از دستورات زبان LINQ  استفاده می کنیم .

 

2-Entity Sql  : یک زبانی که با اشیا سرو کار دارد و به شما امکان می دهد که کویری خود را ب روی اشیا بدون نیاز به زبان  Tsql  انجام دهید .

 

3-Querying with Method  : متدهایی از شی objectquery  هستند که به شما اجازه می دهند با ترکیبی از عبارتهای لامبدا  Lambdas   کویری خود را بنویسید .

 

ادامه دارد ....

در بخش بعدی در مورد هر کدام از موارد بالا مفصلتر خواهم نوشت .


Entity Framework 4 part ۶

QUERYING THE EDM

در بخشهای قبلی جزییات نحوه ایجاد یک مدل و ساختار آن را توضیح دادم ، اکنون نوبت به نوشتن دستورات است و چگونه با داده های بوسیله مدلها در تعامل باشیم ، بازیابی اطلاعات و حذف و تغییر چگونه خواهد بود . ما تا قبل از آمدن مفاهیم ORM  ها و غیره برای انجام کویری برروی داده ها مستقیما با بانکهای اطلاعاتی سرو کار داشتیم در واقع با دستورات T-SQL  سرو کار داشتیم . اما از اینجا به بعد با دستورات LINQ to Entities  و Entity Sql  سروکار خواهیم داشت .این دستورات با EDM  سروکار دارند . اما لازم دانستم قبل از وارد شدن به این مبحث ابتدا در مورد Logical Query Processing  در  sql server کمی صحبت کنم . حتما تا حالا با انواع و اقسام دستورات پرس و جو با بانکهای اطلاعاتی سرو کار داشته اید ، آیا تا حالا از خود پرسیده اید که فرایند و تسلسل این دستورات چگونه است ، کلا در یک عبارت پرس و جو از چند جدول بانک اطلاعاتی ابتدا کدام دستور اجرا می شود .

ما می دانیم که هر عبارت پرس و جو دارای عناصر زیر است .

From ,select,where,on , join,group by , having ,order by,top ,  است . ترتیب اجرای آنها در یک عبارت جستجو بصورت زیر است .

 

1. FROM
2. ON
3. OUTER
4. WHERE
5. GROUP BY
6. CUBE | ROLLUP
7. HAVING
8. SELECT
9. DISTINCT
10 ORDER BY
11. TOP

1-عبارت from  در واقع اول از همه اجرا می شود به این دلیل که ابتدا باید جدوال منبع جستجوی ما مشخص شوند

2-عبارت on ,outer ,…. در واقع عبارتهای الحاقی ، همان عبارتهایی که بعد از مشخص شدن جدولهای مورد نظر ، حالا باید مشخص شود که ترکیب این جدولهای چگونه است .

 

3-از میان ترکیب چند جدول حالا بر اساس عبارت where  مجموعه ای از داده ها انتخاب می شوند

 

4-در ادامه از میان این داده های انتخاب شده ، داده ها بر اساس فیلدهایی گروه بندی می شوند.

 

5-وباز در ادامه از میان گروهها ممکن است مجموعه ای از عناصر بر اساس دستور having  فیلتر شوند

 

6-select  اینجا با این دستور در واقع داده ها برای نمایش و نتیجه برگزیده می شوند .

 

7-از میان داده ها برگزیده شده ممکن است سورت خاصی مد نظر شما باشد که با استفاده از order by  عمل سورت برای شما انجام می شود

 

دیدن فایل پی دی اف زیر را برای فهم بهتر مطالب ، توصیه می شود .


ادامه دارد....