Entity SQL part 1
در بخش قبل در مورد LINQ to Entities صحبت کردیم . همچنین در بخشهای قبلی اگر خاطرتان باشد گفتم که Entity SQL هم می تواند از طریق ObjectService و هم مستقیما می تواند از طریق EntityClient با بانک اطلاعاتی ارتباط برقرار کند . علاوه بر اینها ذکر کردیم که به دستورات T_SQL شبیه است . بنابراین باید مطالب را در 3 بخش توضیح دهم . بخش اول در مورد شباهتها و تفاوتهای Entity SQL و بخش دوم در مورد تعامل Entity SQL با ObjectService و بخش سوم در مورد تعامل Entity SQL با EntityClient خواهد بود .
بخش اول : تفاوتهای Entity SQL با دستورات T-SQL
1-وراثت و ارتباطات
همانطور که می دانید در مدل ما به دلیل وجود کلاسها .، از مفهوم وراثت و ارتباط بین عناصر پشتیبانی می کند در حالی که T-SQL فقط از ارتباطات بین عناصر پشتیبانی می کند . علاوه بر این Entity SQL در واقع با مدل مفهومی Conceptual entity سرو کار دارد .
2-Collections
Entity SQL همانند یک کلکسیونی از اشیا رفتار می کند در واقع داده های حاصل از آن براحتی در مجموعه Collection ها قابل جایگزاری است .
3-پشتیبانی از عبارتها
شما در دستورات T-SQl فقط با جدولها و ستونهای آن جدولها سروکار دارید در حالی که در Entity SQL علاوه بر اینها شما می توانید در کویری خود عبارتهای مختلفی را نیز داشته باشید .
4-select Value
این عبارت زمانی به کار می رود که ما بخواهیم آیتم مشخصی را بصورت آبجکت یا کلکسیون و یا یک مقدار اسکالر داشته باشیم . به شکل زیر دقت کنید .
در شکل بالا یک ساختاری کلی از عبارت select value در Entity SQL نمایش می دهد . همانطور که می بینید . در دستور بالا ما یک Object بر می گردانیم یعنی حاصل کویری ما یک Object است .با همین فرم بالا ما می توانیم یک ابجکت و یا مقدار مشخص یا کلکسیونی از داده ها داشته باشیم .به شکل زیر دقت کنید .
در کویری اول ما یک شی و در کویری دوم ما یک فیلد و در نهایت در کویری سوم ما یک ستونی بر می گردانیم که از نوع ارجاع Refrence می باشد . مبحث این مطلب بعدها توضیح خواهم داد .
خوب اکنون متوجه شدیم که عبارتهای کویری در Entity SQL تا چه حد می توانند انعطاف پذیر باشند .
اما اگر بخواهیم چندین آیتم انتخاب کنیم دیگر نیازی به عبارت value نخواهیم داشت بلکه ذکر نام آن فیلدها کافی است .
5-Referencing Columns
در دستورات زبان T-SQl به هنگام انتخاب ستونهای جدول نیازی نیست که قبل از نام هر ستون ، نام جدول ذکر شود اما در Entity SQL این امر ضروری است شما باید در مقابل نام هر ستون ، ابتدا نام مرجع آن را هم ذکر کنید .دستور پایین اولی یک دستور T-SQl است و دومی یک دستور Entity SQL است .
select a from T
select t.a as A from T as t
6- عدم پشتیبانی از *
حتما می دانید که در زبان T-SQL هر گاه بخواهیم تمام ستونهای یک جدول را انتخاب کنیم از عبارت * استفاده می کردیم اما در Entity SQL این کار امکان پذیر نیست .
7-عدم پشتیبانی از دستورات DDL و DML در Entity SQL
8-پشتیانی از گروه بندی مستعار
خیلی وقتها شما نیاز دارید برای کویری خود یک گروه بندی تعریف کنید . در زبان T-SQL شما باید نام گروهها را به صراحت و مطابق نام ستونها تعریف کنید در حالی که در زبان Entity SQL شما می توانید از عبارتها مستعار هم استفاده کنید . در عبارت زیر یک دستور T-SQL است .
select b + c, count(*), sum(a)
from T
group by b + c
حال عبارت بالا در Entity SQl مشاهده کنید که چگونه برای گروه نام مستعار انتخاب کرده است .
select k1, count(t.a), sum(t.a)
from T as t
group by t.b + t.c as k1
مبحث در این زمینه مفصل است اما اگر بخواهید کاملتر مطالع کنید از این لینک استفاده کنید
ادامه دارد....
عالی