Entity Framework 4 part ۵

Model’s Supporting Metadata

وقتی شما به مدل نگاه می کنید تنها نمایی جزیی از کار را می بینید ، اکنون شما باید بدانید که در پشت پرده مدل شما چه فایلها و کدهایی ایجاد شده است .برای این کار مطابق مثالهای قبل یک پروژه جدید ایجاد کنید و از بانک اطلاعاتی Northwind  یک مدل از جداول categories  و  products ایجاد می کنیم . مطابق شکل زیر


خوب اگر خاطرتان باشد گفتیم که هر مدل که ایجاد می کنیم محتویات آن در یک فایل .edmx  است .ما اکنون می خواهیم ساختار دقیقتر و جزیی تری از این فایل را بدانیم برای اینکار بر روی فایل مدل خود فرضا فایل Model1.edmx  کلیک راست کنید و از گزینه های باز شده گزینه open with  را انتخاب کنید از پنجره زیر گزینه xml Editor  را انتخاب کنید .



دکمه ok  را کلیک کنید . فایلی در ساختار XML  برای شما باز می شود.



در واقع ساختار بالا یک ساختار فراداده metadata از فایل model1.edmx است . فایل و ساختار Metadata  معمولا یک ساختار معنایی ، تشریح کننده محتوا ، محل نگه داری ، خصوصیات فیزیکی ، نوع و شکل منبع است . در واقع ما اینجا هم چنین فایلی برای مدل داریم .فایل .edmx دارای سه بخش Metadata  است .

1-Store schema definition language  مخفف آن ssdl  : معمولا ما به آن مدل فیزیکی و ذخیره ای از داده های مدل می گوییم

2-Conceptual Schema definition language   مخفف آن csdl  : معمولا ما با آن مدل مفهومی یا ادراکی مدل می گوییم

3-Mapping specification language   مخفف آن MSL  : معمولا مدل Map از ساختار مدل و داده ها است .

اکنون اگر به تصویر بالا دقت کنید تمام عناصر ذکر شده را به ترتیب دربخشهای SSDl content  و CSDL content  و Mapping content  مشاهده می کنید .

 

1-SSDL    مدل فیزیکی :ما  در اینجا ساختار ذخیره ای و فیزیکی مدل را با فرمت Xml  داریم . اگر به این فرمت دقت کنید مهمترین عناصر آن به ترتیب زیر هستند :

1-1-Schema  : اگر دقت کنید در سطر اول ظاهر می شود از فیلدهای اجباری است که مهمترین عنصر آن NameSpace  است که اجباری است و باید باشد و باید به فضای نام Entity  ما اشاره کند .در واقع مفهومی شبیه به همان مفهوم فضای نام Name Space  در کلاسها و کد نویسی دارد.


2-1- EntityType : نشان دهنده اشیا Object  موجود در مدل است . نام هرEntity Type  در آن فضای نام باید منحصر به فرد باشد و تکرار مجاز نیست هر کدام از EntityType  ها نشان دهنده مدلی از جدول در بانک اطلاعاتی است مثلا در این مثال products  نمایش دهنده مجموعه رکوردهای جدول product  از بانک اطلاعاتی است .


property-3-1 : هر کدام از EntitType  های مدل ما یکسری عناصر دارند ، که این عناصر دارای نام و نوع و طول و مقدار کارکتر یا محدوه عددی و مقیاس و تهی پذیر یا خیر می باشد .در واقع اگر بخواهیم تشبیه کنیم ، می توان گفت ما در اینجا با فیلدهای جدول سرو کار داریم .

4-1 - key :

1-4-1  PropertyRef : ما در اینجا فیلدی را مشخص می کنیم که کلید اصلی جدول داده ها یا مدل داده های ما است مثلا اگر در بانک اطلاعاتی Product  فیلد اصلی ProductId  باشد پس مقدار این آیتم هم productId خواهد بود.


Association  -6-1

-1-6-1    End : همانطور که می دانید بانک اطلاعاتی از ارتباطات بین عناصر برخوردار هستند ارتباطاتی مانند ارتباط یک به یک و یک به چند یا چند به چند و.. در آمزشهای قبلی ذکر کردم که عناصر مدل می توانند مانند بانکهای اطلاعاتی باهم ارتباط داشته باشند که از طریق این خصوصیت امکان پذیر است

Associationset  نشان دهنده ارتباط و نام و مشخصات آن و گره End   نشان دهنده راسهای ارتباط بین عناصر است.

referential constraint   : این قسمت در واقع نشان دهنده قیدهای ارتباط است ما می دانیم در هر ارتباط بین عناصر 2 جدول یک کلید اصلی است و کلید دیگر باید کلید خارجی یا ثانویه باشد .


                  principal : نشان دهنده منشا و کلید اصلی ارتباط

                 Dependent      : نشان دهنده کلید ثانویه یک ارتباط بین عناصر است . 

  

8-1- EntityContainer     : به طور کلی در این قسمت ما دو گره Entityset  و Associatioset را داریم .و درواقع ساختاری کلی از منبع داده را برای ما نمایش می دهد


9-1-   EntitySet   : گروهی از EntityType  های منبع داده را نمایش می دهد.


10-1- Associationset  : مجموعه و ساختار کلی ارتباطات را نمایش می دهد

 

بطور کلی بحث در مورد ساختار SSDL بسیار مفصل است اما در این مطلب مختصری برای آشنایی   بیان کردم .

2-CSDL مدل مفهومی یا ادراکی : ما در اینجا می توانیم ادعا کنیم که با یک الگو و ساختاری نمونه برای مدل داده ها سرو کار داریم . ساختار آن بسیار شبیه به ساختار SSDl  است . البته با تغییراتی بیشتر .

تفاوت این دو قسمت بالا زمانی نمایان می شود که ما حالت مدل را انتخاب کنیم ، یعنی اگر ما از بانک اطلاعاتی، مدل را بسازیم در این حالت ما SSDL  را خواهیم داشت . اما اگر یادتان باشد ما حالتی داشتیم که اول مدل را طراحی می کردیم و سپس بر اساس مدل بانک اطلاعاتی را می ساختیم در این حالت ما  فقط محتویات مفهومی و معنایی مدل  CSDL  را خواهیم داشت.


3-MSL  : در واقع حلقه وصل بین SSDL  و CSDL است . به شکل زیر دقت کنید :



    در شکل بالا می بینید که چگونه عمل Map  انجام می شود . مهمترین عناصر  MSL  به شرح زیر است :

1-Mapping  : عنصر ریشه ای می باشد که در برگیرنده تمام آیتمهای MSL  است .

2-EntiyContainerMapping  : در این قسمت نام هر Entitycontainer  موجود در دو بخش SSDL  و CSDL  را شامل می شود در واقع ظرفی ایجاد می کند برای ایجاد ارتباط بین   SSDL EntityContainer  و بخش

CSDL Entitycontainer

3-EntitySetMapping : این بخش نیز ارتباطی ایجاد می کند بین هر بخش Entityset موجود در SSDL  و CSDl

4-   ٍEntityTypeMapping  :  این بخش نیز ارتباطی ایجاد می کند بین EntityType های دو بخش SSDL و CSDL

بحث در مورد SSDL  و CSDL  و MSL  بسیار مفصل است ، تا اینجا بحث را در این بخش خاتمه می دهم اما در این مقاله فهمیدیم که وقتی یک مدل از بانک اطلاعاتی ایجاد می کنیم در پشت صحنه ایجاد یک فایل Metadata  چگونه اطلاعات ساختار بندی می شود.


 

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