نگاهی عمیق تر به Entity Data model
ابتدا از محیط کاری و پنجره های طراحی EDM صحبت می کنیم . در کار با EDM 4 پنجره از محیط طراحی برای شما بسیار مفید است
1-Designer surface : سطح بصری طراحی می باشد که شما می توانید به کمک آن ساختار و مدل EDM را ایجاد و یا تغییر دهید.
2-Mapping Detail windows : پنجره ای برای map کردن و تغییر در این پنجره شما یک ساختار فیزیکی از عناصر Entity را مشاهده می کنید
3-Toolbox : جعبه ابزار که برای همه مشخص است و در مقاله قبل با آن بیشتر آشنا شدیم
4-Model Browser Window : این پنجره ساختاری درختی از مدل مفهومی و منطقی مدل نمایش می دهد .
در شکل زیر این چهار پنجره به تفکیک نمایش داده شده است ..
Entities
برای فهم بهتر entity باید با چند مفهوم آشنا شویم
Entity Type : نشان دهنده نوع خاصی از داده ها است مثلا داده ای از نوع سطرهای جدول کارمند Emplyee ، در واقع می توان گفت رکوردهای جدول را نشان می دهند..
Entity Set : یک در برگیرنده یا مجموعه ای از Entity های واحد .بنابر این Entity ها را می توان بصورت Entity Set گروه بندی کرد .در هر Entity set ما می توانیم چند Entity type داشته باشیم و هر گروه Entity Set نیز می تواند با یک Entity Set دیگر در ارتباط باشد .
فرض کنیدما 3 نوع Entity Type به نامهای Salesperson ,SalesOrderHeader,SalesOrderDetail داریم و دو تا Entity Set داریم که به صورت شکل زیر هستند
دراینجا Entity Set اول شامل دوتا Entity Type است .
Scalar Properties : اگر مقاله های قبلی را مطالعه کرده باشید متوجه شدید که هر Entity Type دارای مجموعه ای از خصوصیات (Properties ) می باشد که یکی از آنها Scalar Properties است . اگر بخواهیم آن را به زبان ساده بیان کنیم باید بگویم که این آیتم در واقع خصوصیتهایی را تعریف می کند که مقادیر رایج متغیرها یعنی عدد ، رشته ، کارکتر و تاریخ و غیره را می پذیرد .به تعبیری دیگر همان فیلدها بانک اطلاعاتی هستند که هر کدام دارای نوع هستند اگر شما یک Entity Type از مثالهای قبل ایجاد کرده باشید کافیست یکی از خصوصیات را انتخاب کنید و به پنجره Properties دقت کنید
می بینید هر کدام از فیلدها یا همان خصوصیتهای Entity ما دارای ویژگیهایی است مانند زیر
Name : نام خصوصیت مورد نظر را نمایش می دهد که می توان آن را تغییر داد
Nullable : آیا فیلد مشخص شده مقدار Null را می پذیرید
Setter : همان خاصیت Set در تعریف خصوصیات کلاسها که ما در اینجا سطح دسترسی آن را تعریف می کنیم
Getter : همان خاصیت Get در تعریف خصوصیت فیلد کلاسها که ما در اینجا سطح دسترسی آن را تعریف می کنیم
StoredGenerationPattern : معادل Auto –generated در بانکهای اطلاعاتی یعنی مقادیر یک فیلد اتوماتیک اضافه می شوند
Type : نوع فید
Default Value: مقدار پیش فرض
Complex Types
حتما تا کنون با ساختارها (structure) سروکار داشته اید . ما ساختاری تعریف می کردیم که می توانست مجموعه ای از داده های متفاوت را با هم در یک متغیر ساختاری جمع آوری می کرد . مفهموم Complex Types چیزی شبیه به همان مغیرهای ساختاری است . در وواقع یک متغیر مرکب است .مثلا اگر بخواهید آدرس فردی را با ساختار تلفن – آدرس منزل_ایمیل _شماره موبایل ، ذخیره کنید .باید از یک متغیر مرکب یا همان complex استفاده کرد . اکنون با مثال نحوه تعریف آن را نشان می دهم .ما در بخش قبل گفتیم که یک Entity می تواند شامل خصوصیاتی باشد که از نوع متغیرهای متعارف باشد مثلا عددی یا کارکتری و غیره ، اما اگر بخواهیم خصوصیتی پیچیده تر و با نوع مرکب داشته باشیم ، مثلا یک خصوصیت داشته باشیم که از نوع ساختاری یا یک نوع مرکب و پیچیده ، چکار بایدکرد . جواب همان Complex Types
شما باید ابتدا یک آیتم و متغیر از نوع Complex Types تعریف کنید و پس از آن در Entity مورد نظرتان یک خصوصیت از نوع Complex Property تعریف کنید که این خصوصیت مرکب بعدا از نوع Complex Types خواهد بود.
فرض کنید پروژه ای که قبلا ایجاد کرده ایم را باز کرده ایم ، به پنجره Model Browser دقت کنید
همانور که می بینید گزینه Complex Types را مشاهده می کنید . برای ایجاد آن بر روی Complex Types کلیک راست کرده و گزینه Create Complex Types را انتخاب کنید .یک آیتم Complex Types ایجاد می شودنام آن را AddressInfo می نامیم اکنون بر روی همان آیتم مجددا کلیک راست کنید و گزینه Add را انتخاب کنید و سپس گزینه Scalar Property را انتخاب کنید .لیستی از انواع برای شما باز می شود
فرض کنید می خواهیم آیتمی تعریف کنیم که آدرس را بصورت شماره تلفن و آدرس ذخیره کند پس 2 قسمت داریم یکی Phone , و دیگری Address است فرض کنیم اولی از نوع عددی و دومی کارکتری پس اولی را بصورت زیر تعریف کنید
Add ----à Scalar Property --à Int32
و سپس نام آن را phone وارد کنید برای دومی هم به همان ترتیب با این تفاوت که نوع آن String است .
اکنون ما یک آیتم complex Types تعریف کردیم اما ما مشخص نکردیم که این آیتم باید به کدام Entity ارتباط داشته باشد برای اینکار بر روی یکی از Entity های مدل فرضا Entity2 کلیک راست کرده و گزینه Complex Types را انتخاب می کنیم مانند شکل زیر خواهد شد
propertie مرتبط به این Complexproperty بروید و از قسمت Type مربوطه آیتم AddressInfo را انتخاب کنید در حقیقت ما اینجا خصوصیتی تعریف کردیم از نوع AddressInfo که در واقع یک نوع مرکب جدید تعریف شده توسط کاربر است .
دمت گرم