Entity Framework 4 part ۱۰

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


مبحث در این زمینه مفصل است اما اگر بخواهید کاملتر مطالع کنید از این لینک استفاده کنید

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