X
تبلیغات
پیکوفایل
رایتل

در بخش قبل گفتم که چند روش برای انجام کوئری بر 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  در ارتباط مستقیم است .



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

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