Entity Framework چیست؟
Entity چیست ؟
ما برای فهم Entity Framework باید ابتدا مفهوم Entity را متوجه شویم.
تشابه Entity با شی یا object
1- Entity مانند شی دارای انواع تعریف شده برای داده ها و فیلدها است
2- Entity مانند شی دارای خصوصیت یا properties است
3- هر Entity یک هویت متمایزی دارد
4- یک خصوصیت Entity می تواند ارجاعی به Entity دیگر باشد
تفاوت Entity با شی یا object
1 -Entity می تواند یک فیلد اصلی یا primary keys داشته باشد
2-Entity می تواند دارای ارتباطی با Entity دیگر باشدمانند ارتباطات موجود در بانک اطلاعاتی
تشابه Entity با داده رابطه ای relational data
1-Entity یک ارتباط چند گانه مانند داده ها با دیگر entity می تواند داشته باشد
2-Entity مانند داده ها می تواند کلید اصلی یا primary key داشته باشد
تفاوت Entity با داده رابطه ای relational data
1-Entity از داده ها با نوع پیچیده complex typesپشتیبانی می کند
2-Entity از وراثت موجود در کلاسها پشتیبانی می کند
3-Entity داده های فیزیکی را ذخیره نمی کند .
پس Entity Framework چیست ؟
درواقع Entity Framework تکنولوژی توسعه یافته ADO.Net است که فاصله بین برنامه نویسی شی گرایی و بانک اطلاعاتی رابطه ای را پر می کند .این فاصله معمولا تحت عنوان عدم تطابق شناخته می شود. و یک تکنیک برنامه نویسی برای تبدیل ارتباطات در Databaseبه مفاهیم Object Oriented در برنامه نویسی است. در واقع میتوان گفت که کلاس ها را بهTable ها map میکند. وقتی که شما میخواهید به Database دسترسی پیدا کنید، یا اطلاعاتی را ذخیره کنید، این کارها را مستقیما بر روی اشیاء ( Object تان ) انجام میدهید.Entity Framework مدل داده ها را به سه بخش تقسیم می کند 1-مدل مفهومی یا ادراکی 2-مدل منطقی 3- مدل فیزیکی
با استفاده از این تکنولوژی، توسعهدهندگان میتوانند در سطح بالاتری از تجرد در حین کار با دادهها دست یابند. آنها همچنین میتوانندنرمافزارهای بر مبنای داده را با میزان کمتر از کد نسبت به نرمافزارهای سنتی ساخته و نگهداری کنند.
پسوندهای موجود در Entity Framework عبارتند از
۲- ssdl : این پسوند از مخفف شدن Store Schema Definition Language ساخته شده است. این نوع فایل مدل ذخیرهسازی را تعریف میکند. به این مدل، مدل منطقی (logical model) هم گفته میشود.
۳- msl : این پسوند از مخفف شدن Mapping Specification Language ساخته شده است. این نوع فایل نگاشت بین دو مدل بالا را تعریف میکند.
domail model : در این مدل موجودیتها و ارتباطات فی ماین را در سیستمهایی که مدل شدهاند تعریف میکنند.
logical model : این مدل در پایگاه دادههای رابطهای، موجودیتها و ارتباطات را در جداول با محدودیتهای کلید خارجی، نرمالسازی میکنند.
physical model : این مدل قابلیتهای یک موتور دادهای خاص را به وسیله مشخص کردن جزئیات ذخیرهسازی مانند partitioning و indexing اداره میکند.
در Entity Framework به domain model ، مدل مفهومی یا conceptual model گفته میشود. همچنین معادل logical model هم مدل ذخیرهسازی یا storage model میباشد.
Entity Framework از اطلاعات موجود در مدل و فایلهای نگاشت، برای ترجمه کوئریهای آبجکتی در برابر موجودیتهای جایگزین شده در مدل مفهومی به کوئریهای سطح پایگاه داده استفاده میکند.
روشهای موجود برای کوئری زدن روی مدل مفهومی عبارتست از :
۱- LINQ to Entity : قابلیت استفاده از LINQ به انواع موجودیت تعریف شده در مدل مفهومی را مهیا میکند.
۲- Entity SQL : یک نسخه از زبان SQL است که مستقل از ذخیرهسازی است و به صورت مستقیم با موجودیتهای موجود در مدل مفهومی و آنهایی که مفاهیم EDM را پشتیبانی میکنند کار میکند. این نوع از زبان هم با کوئریهای آبجکتی و هم کوئریهایی که توسط استفاده از Entity Client Provider اجرا میشوند، قابل استفاده هستند.
۳- متدهای سازنده کوئری(Query Builder Methods) : این متدها، این امکان را به ما میدهند که کوئریهای Entity SQL را با استفاده از متدهای کوئری که در LINQ to SQL موجود است تولید کنند.
توجه به این نکته اهمیت دارد که Entity Framework از EntityClient data provider برای مدیریت اتصال به پایگاه داده، ترجمه کوئریهای موجودیت به کوئریهای مخصوص منبع داده و باز