Frame Entitywork چیست؟ مزایا و معایب
۲-Entity می تواند دارای ارتباطی با Entity دیگر باشدمانند ارتباطات موجود در بانک اطلاعاتی
تشابه Entity با داده رابطه ای relational data
۱-Entity یک ارتباط چند گانه مانند داده ها با دیگر entity می تواند داشته باشد
۲-Entity مانند داده ها می تواند کلید اصلی یا primary key داشته باشد
تفاوت Entity با داده رابطه ای relational data
۱-Entity از داده ها با نوع پیچیده complex typesپشتیبانی می کند
۲-Entity از وراثت موجود در کلاسها پشتیبانی می کند
۳-Entity داده های فیزیکی را ذخیره نمی کند .
پس Entity Framework چیست ؟
درواقع Entity Framework تکنولوژی توسعه یافته ADO.Net است که فاصله بین برنامه نویسی شی گرایی و بانک اطلاعاتی رابطه ای را پر می کند .این فاصله معمولا تحت عنوان عدم تطابق شناخته می شود. و یک تکنیک برنامه نویسی برای تبدیل ارتباطات در Databaseبه مفاهیم Object Oriented در برنامه نویسی است. در واقع میتوان گفت که کلاس ها را بهTable ها map میکند. وقتی که شما میخواهید به Database دسترسی پیدا کنید، یا اطلاعاتی را ذخیره کنید، این کارها را مستقیما بر روی اشیاء ( Object تان ) انجام میدهید.Entity Framework مدل داده ها را به سه بخش تقسیم می کند ۱-مدل مفهومی یا ادراکی ۲-مدل منطقی ۳- مدل فیزیکی
با استفاده از این تکنولوژی، توسعهدهندگان میتوانند در سطح بالاتری از تجرد در حین کار با دادهها دست یابند. آنها همچنین میتوانندنرمافزارهای بر مبنای داده را با میزان کمتر از کد نسبت به نرمافزارهای سنتی ساخته و نگهداری کنند.
پسوندهای موجود در Entity Framework عبارتند از
– csdl : این پسوند از مخفف شدن Conceptual Schema Definition Language ساخته شده است. همانطور که از نام آن مشخص است این نوع فایل شامل مدل مفهومی (conceptual model) ما میباشد. این نوع فایل، پیاده سازی معادل Entity Data Model در LINQ میباشد.
۲– 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 برای مدیریت اتصال به پایگاه داده، ترجمه کوئریهای موجودیت به کوئریهای مخصوص منبع داده و باز گرداندن یک datareader که Entity Framework برای ساختن موجودیتها در آبجکتها نیاز دارد، استفاده مینماید. زمانی که نیازی به تبدیل شدن به آبجکتها هم نیاز نباشد این provider میتواند به عنوان یک ADO .NET data provider استفاده شود و خروجی را به عنوان یک datareader فقط خواندنی بدهد.
مزایا:
سطح یادگیری ساده: کار با EF به نسبت بقیه ORMها تقریبا ساده تر است.
پشتیبانی از دیتابیسهای مختلف در نسخه.
توسعه فعال: همونطور که اشاره شد، به نظر میاد Microsoft، قصد جدی ای در توسعه این ابزار داره. اضافه شدن امکانات زیاد به نسخه ۴ نشان دهنده همین مطلب هست. امکانات زیادی به نسخه ۴ اضافه شده مثل امکان Code First، Lazy Loading و … در نسخه ۴ به اون اضافه شدن.
ابزار رسمی Microsoft: از اونجا که این ابزار توسط Microsoft ارائه میشه، میشه انتظار محبوب تر شدن اون رو در طی زمان داشت.
پشتیبانی کامل از Linq.
نصب خودکار با Visual Studio.