Entity Framework چیست؟

دوشنبه 10 تیر 1392

Entity Framework چیست؟ <br/> ما برای فهم Entity Framework باید ابتدا مفهوم Entity را متوجه شویم. <br/> تشابه Entity با شی یا object <br/> 1- Entity مانند شی دارای انواع تعریف شده برای داده ها و فیلدها است <br/> 2- Entity مانند شی دارای خصوصیت یا properties است <br/> 3- هر Entity یک هویت متمایزی دارد <br/> 4- یک خصوصیت Entity می تواند ارجاعی به Entity دیگر باشد

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 عبارتند از
- 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، قصد جدی ای در توسعه این ابزار داره. اضافه شدن امکانات زیاد به نسخه 4 نشان دهنده همین مطلب هست. امکانات زیادی به نسخه 4 اضافه شده مثل امکان Code First، Lazy Loading و … در نسخه 4 به اون اضافه شدن.
ابزار رسمی Microsoft: از اونجا که این ابزار توسط Microsoft ارائه میشه، میشه انتظار محبوب تر شدن اون رو در طی زمان داشت.
پشتیبانی کامل از Linq.
نصب خودکار با Visual Studio.

ایمان مدائنی

نویسنده 1299 مقاله در برنامه نویسان
  • C#.net
  • 14k بازدید
  • 6 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید