در مطلب های درباره Entity Framework و ASP.NET MVC و معماری Entity Framework در مورد برخی از مفاهیم Entity Framework صحبت شد و در ادامه آنها، در این مطلب مفاهیم و واژگان دیگری را آموزش می دهیم. سپس در مطلب پیش رو گونه (انواع) متفاوت رویکردهای Entity Framework را آموزش داده و سپس در مطلب های دیگری به بررسی ADO.NET و SQL Server LocalDB می پردازیم.

۱ – موجودیت

موجودیت (Entity) واژه و مفهومی است در زمینه پایگاه داده های رابطه ای که به هر شی یا فردی درون سیستم گفته می شود، که می خواهیم در مورد آن اطلاع (آگاهی) داشته باشیم. منظور از سیستم، آن محیطی است که می خواهیم توسط پایگاه داده رابطه ای آن را مدل کنیم. به طور مثال سیستم دانشگاه، فروشگاه اینترنتی، انبار، وب سایت، دفترچه تماس و آدرس و یا هر آن محیطی که می خواهید مدل کنید.

بنابراین هر فرد یا شی درون سیستم یک مدل است، به طور نمونه در سیستم دانشگاه، استاد، دانشجو، درس، کارمندان، مدریت ها و دپارتمان های آموزشی (دانشکده ها) همگی موجودیت های درون سیستم دانشگاهی هستند که می خواهیم درون پایگاه داده رابطه ای در مورد آنها داده هایی را جمع آوری و ذخیره سازی کنیم تا در زمانی دیگر به این داده ها دسترسی داشته باشیم.

۲ – خصوصیت ها موجودیت ها

هر موجودیت دارای یک تا چندین خصوصیت (Attribute) است که در واقع ویژگی ها آن خصوصیت هستند. به طور نمونه افراد دارای نام، نام خانوادگی، سن، جنسیت و غیره هستند. این خصوصیت ها و ویژگی ها دارای نوع هستند. به طور نمونه شناسه کارمندی به صورت عددی است ولی می تواند ترکیبی از عدد و کاراکتر نیز باشد.

۳ – رابطه میان موجودیت ها

در سیستمی که می خواهیم مدل کنیم، در کنار شناسایی خصوصیت ها و نوع آنها، باید رابطه میان موجودیت ها نیز شناسایی و سپس مدل شود. در مفاهیم پایگاه داده رابطه ای سه گونه رابطه یک به یک (One-to-One)، یک به چند (One-to-Many) و چند به چند (Many-to-Many) وجود دارد. به طور نمونه میان استاد و دانشجو یک رابطه چند به چند است، به طوری که هر استاد چندین دانشجو و هر دانشجو نیز چندین استاد دارد.

آنچه که در بالا گفته شد، مفاهیمی بود که در مدل سازی یک سیستم و پیش از پیاده سازی مدل درون یک سیستم مدیریت پایگاه داده رابطه ای (RDBMS) در نظر گرفته می شود. پیش از آنکه بخواهید جدول ها و دیگر اشیا درون اسکیما (Schema) پایگاه داده رابطه ای را پیاده سازی کنید، باید سیستمی که می خواهید مدل کنید را باید شناسایی کنید و سپس توسط ابزارهایی مانند دیاگرام های ER یا EER آن را به نمایش در آورید. از نمودارهای ER و EER برای نشان دادن موجودیت ها، خصوصیت های آنها به همراه نوع هر خصوصیت و رابطه میان آنها استفاده می شود.

در پیاده سازی، سیستم را می توانیم برابر با یک پایگاه داده در نظر بگیریم که شامل یک تا چندین جدول است. هر موجودیت برابر با یک جدول و خصوصیت های هر موجودیت برابر با ستون های آن جدول است که نوع ستون ها نیز برابر با نوع موجودیت ها است. البته جدول ها می تواند دارای یک کلید اصلی (Primary Key) و چندین کلید خارجی (Foreign Key) و دارای محدودیت هایی باشد.

از سه مفهوم به نام های Entity Type و Association Type و Property برای توصیف ساختار داده استفاده می شود. بنابراین برای درک و فهم بهتر از چگونگی کارکرد Entity Framework و چگونگی توصیف ساختار داده ها در EDM باید این سه مفهوم را در ادامه توضیح دهیم.

۴ – Entity Type

اصلی ترین ساختار در توصیف ساختار داده ها در EDM مفهومی است به نام Entity Type که در لایه مدل مفهومی (Conceptual Model Layer) در EDM از آن برای توصیف موجودیت های درون سیستم مورد نظر استفاده می شود. به عبارت دیگر در لایه مدل مفهومی می توان Entity Type را معادل یک موجودیت در نظر گرفت که از خصوصیت هایی (Property) تشکیل شده است. به طور مثال Entity Type های متفاوتی بر اساس سیستم مانند کالاها، مشتری ها، استادها، دانشجوها، کارمندان، دستمزد وجود داشته باشد.

۵ – Association Type

همانطور که گفتیم میان موجودیت های درون سیستم رابطه هایی وجود دارد که این رابطه ها توسط Association Type یا Association درون EDM و در لایه مدل مفهومی توصیف می شوند. در واقع درون لایه مدل مفهومی Association  رابطه میان هر دو Entity Type را نشان می دهد. هر Association دارای دو Association End است که هر به یک Entity Type در دو سوی Assiciation اشاره دارد.

همچنین هر یک از Association End یک Association End Multiplicity را تعیین می کند که بیانگر تعداد موجودیت هایی است که در انتهای Association وجود دارد. همانطور که گفتیم میان موجودیت ها رابطه هایی وجود دارد. به طور نمونه در رابطه میان موجودیت های مشتری و سفارش، هر سفارش مربوط به یک مشتری و هر مشتری می تواند چندین سفارش داشته باشد.

هر موجودیت درون مفهومی به نام Entity Set، حتما باید دارای یک Entity Key باشد که نشان دهنده کلید اصلی است.  Entity Key به صورت منحصر برای خود هر موجودیت است. یک Entity Set مجموعه ای از چندین Entity Type است که خود Entity Set و مفهوم دیگری به نام Association Set  درون یک  به صورت منطقی گروه بندی شده اند.

۶ – Property

گفتیم هر موجودیت خصوصیت هایی (Attribute) دارد که در EDM و در مدل لایه مفهومی همانند دو مفهوم بالا (Entity Type و Association)، خصوصیت ها نیز باید توصیف شوند. هر Entity Type دارای یک تا چندین Property است که ویژگی های آن موجودیت را توصیف می کنند. به طور نمونه موجودیت کارمند، دارای خصوصیت های شناسه کارمندی، نام، نام خانوادگی، سن، شهر زندگی است.

شکل زیر نمونه ای از یک نمودار مربوط به نمایش موجودیت ها، رابطه میان آنها و خصوصیت و نوع هرکدام از خصوصیت های موجودیت ها را نشان می دهد. همانطور که می بینید میان موجودیت Book و Publisher رابطه یک به چند وجود دارد، به این معنی که کتاب متعلق به یک ناشر است ولی هر ناشر می تواند چندین کتاب چاپ شده داشته باشد. همچنین میان موجودیت Book و Author رابطه چند به چند وجود دارد، به این معنی که هر کتاب می تواند چندین نویسنده داشته باشد و هر نویسنده هم می تواند چندین کتاب نوشته باشد.

کد زیر نیز نمونه مثالی از محتوای یک فایل لایه مدل مفهومی با پسوند csdl را نشان می دهد. همانطور که گفتیم لایه مدل مفهومی توسط زبان ویژه ای به نام CSDL (یا Conceptual Schema Definition Language) نوشته و ایجاد می شود که ساختار این فایل مبتنی بر XML است.

۷ – اشیا و کلاس های برنامه

همانطور که پیش از این نیز گفتیم، در  و در انجا  از مفهوم شی گرایی استفاده می شود تا بتوانیم درون برنامه خود، جدول ها و ستون های آنها را تعریف و سپس در زمانی دیگر توسط متدها و شی های زبان برنامه نویسی به داده ها دسترسی داشته باشیم. از دید برنامه نویسی (اینجا سی شارپ)، کلاس ها برابر با موجودیت ها (جدول ها) و خصوصیت های (Property) هر کلاس نیز برابر با خصوصیت های (Property) یا ستون های آن جدول هستند.

شما با خواندن و درک این مطلب و مطلب پیشین می توانید پی ببرید که در Entity Framework و بر اساس کلاس ها و خصوصیت های هر کلاس که در برنامه تعریف شده اند، در لایه مدل مفهومی، موجودیت ها و رابطه میان آنها به همراه خصوصیت های هر موجودیت و توسط زبان  توصیف شده اند. حال لایه میانی نگاشت (Mapper Layer) در EDM وظیفه نگاشت این موجودیت ها و رابطه ها را به جدول ها و رابطه های آنها در لایه مدل منطقی دارد. لایه مدل منطقی توسط زبان  ایجاد می شود که زیر ساخت پایگاه داده و اسکیما و اشیا درون اسکیما را توصیف می کند. در مطلب های پیش رو و در زمان توضیح جنبه های دیگر Entity Framework، مفاهیم دیگر نیز توضیح داده می شوند.