نحوه آشنایی من با Entity Developer:

یک مدت پیش، من تصمیم گرفتم که یک پروژه مبتنی بر Java را شروع کنم و دلیل اصلی من این بود که می خواستم مروری بر فریم ورک Hibernate داشته باشم. Hibernate هم یکی از فرم ورک های معروف برای برنامه نویسان زبان Java می باشد که ابزاری را برای دستیابی به داده ها فراهم می کند. بعد از راه اندازی Hibernate به صورت دستی در هنگام ساخت گردید با کمی مشکل رو به رو شدم، و وقتی دیدم خیلی زمان بر خواهد شد و علاوه بر آن ظاهری مشتری پسند نخواهد داشت، تصمیم گرفتم که سمت C# بروم. از آنجایی که میدانستم فرم ورک Hibernate با نام NHibernate برای C# موجود می باشد، کلاس های سمت Java را با کمی تغییراتآماده کار در محیط C# کردم و کارم را ادامه دادم.
با توجه به این که دید من به Hibernate بسیار محدود بود، و فقط نحوه استفاده از خروجی ها را می دانستم و از نحوه بسیاری از Config ها اطلاعی نداشتم،به همین دلیل مشکلات زیادی را در پیش رو داشتم، در ابتدا مشکلات را با جستوجو های زمان بر حل می کردم، تا این که یک روز در NuGetPackage Manager چشمم به ابزاری افتاد که به پیش برد پروژه من بر روی فرم ورک NHibernate سرعت چشم گیری بخشید، Entity Developer.

این نرم افزار قابلیت کار با 3 روش مرسوم ارتباط با پایگاه داده را دارد. که 2 روش آن در C#‎ و دیگری در جاوا بیشترین استفاده را دارا می باشند.

  • ADO.NET Entity Framework
  • LINQ to SQL
  • NHibernate

که من از قسمت NHibernate آن بهره برده ام.در صورتی که شخصی نیاز به تمام این پکیج ها نداشته باشد، یا می خواهد نرم افزار خود را در بیرون مرز ها به نمایش بگذارد و نیاز به خرید لایسنس برای قانونی کردن نرم افزار خود دارد، می تواند نسخه مربوط به فریم ورک دلخواه آن را دریافت کند. که به طور کل شامل چهار پکیج می باشد:

  • Professional
  • for NHibernate
  • for Entity Framework
  • for LINQ to SQL
  • Express (این نسخه رایگان بوده و نسخه محدود شده Professional می باشد، که خیلی از امکانات ویرایشی را به شما نمی دهد)

Entity Developer دو روشساخت "لایه مدیریت داده" را در بر می گیرد:

  • Model First Approach
  • Database First Approach

در این مسیر بنده از دیدگاه اول استفاده کرده ام. برای اطلاعات بیشتر در مورد این روش ها می توانید به لینک http://stackoverflow.com/questions/5...database-first مراجعه کنید.
پس از انتخاب فریم ورک، و روش کار، شما بر اساس انتخاب خود، وارد مرحله انتخاب دیتا بیس، یا وارد مرحله تنظیمات مدل می شوید، و پس از آن الگو کار را تنظیم می کنید. این الگو بیان گر آن است که چه پارامتر هایی و به چه شکل ظاهر شوند، و کد تولید شده پس از خروجی گرفتن، نیز چه امکاناتی را در بر داشته باشد.
پس از پایان کار صفحه ویرایش گر مدل باز می گردد، و (در صورت انتخاب یک مدل موجود، یا ساخت مدل بر اساس دیتا بیس) مدل به صورت یک دیاگرام UML ظاهر می گردد.


در وسط پنجره اصلی قرار دارد و در دو طرف آن چهار پنجره دیگر واقع شده اند. Model Explorer و Properties در سمت چپ، Database Explorer و Diagram Overview در سمت راست.
پنجره Model Explorer شامل تمام اشیاء بر روی صفحه و همچنین عناصر دیگر پروژه می باشد، مثل یک Entity Model یا حتی الگو ی پروژه. در حالی که پنجره مقابل آن (Database Explorer) دیتا بیس جاری را به شما نشان می دهد.

اگر چه پایگاه داده به صورت کامل با مدل Sync نمی باشد، اما با کلیک راست بر روی صفحه ی ویرایش گر مدل، گزینه هایی برای ,Update دیتا بیس خواهید یافت.
مدل شما می تواند شامل چندید آیتم شود، یک کلاس، که در حقیقت همان جدول است، یا نوع شمارنده (Enum) که مقادیری از پیش تعیین شده را شامل می شود و به شما امکان انتخاب می دهد، یا نوع خود یک زیر جدول را تشکیل می دهد و ...
نوع (در حالت NHibernate):

  • Classes: این نوع داده ای بیانگر یک کلاس است که مقادیر درون آن (در حالت عادی) هر یک، یک ستون از جدول می باشند
  • EnumType: این نوع داده، همان enum می باشد که نوع آن را ما مشخص می کنیم. در Hibernate عملیات Map کردن یک نوع enum به ستون مربوط به طور خود کار صورت می گیرد، و Entity Developer فقط تصمیم می گیرد که ستون مربوط با توجه به شرایط enum، به چه شکل ساخته شود.
  • Complex Type: این نوع در پکیج NHibernate واقع شده، و به شما امکان ساخت یک زیر کلاس را می دهد که در خود جدول اصلی Map می شود. مثلا شما فیلد های مربوط به آدرس را در یک نوع پیچیده تعریف می کنید، و آن را به عنوان یک Property در نوع کلاس قرار می دهید، که در واقع برای این کلاس جدول جدا گانه ای وجود ندارد و در جدولی که مربوط به کلاس ی که Field یا Property ، در آن قرارگرفته است می نشیند.

Entity Developer عنواع کلید ها را که ممکن است در پایگاه داده های مختلف وجود داشته باشد، به شما می دهد و شما می توانید کلید مورد نظر از جنس integer و varchar تا جنس GUID و UID را انتخاب کنید.
در کلاس های Entity Developer شما می توانید همچنین از امکانی مثل Inheritance و Association استفاده کنید. و حتی نوع Inheritance را نیز مشخص کنید، مثلا:

  • نوع Table Per Hierarchy: در این نوع Inheritance به اضا تمام جداول ارث برنده، فقط و فقط یک جدول وجود دارد و تمام مقادیر در آن قرار می گیرند
  • نوع Table Per Type: در این روش هر کدام از کلاس های پدر و فرزند، یک جدول دارندو Entity Developerآن ها را با توجه به کلید تعیین شده در جدول پدر Map می کند.

توسط Association شما روابط بین جداول را مشخص می کنید، مثل رابطه یک به چند یا چند به چند. و تصمیم گیری برای نحوه ساخت جدول میانی در روابط چند به چند را به خود Entity Developer واگذار می کنید.
شما حتی می توانید متد هایی مبتنی بر یک تابع SQL یا یک Store Procedure را تعریف کنید.


Template:
وقتی که یک الگو برای پروژه خود مشخص می کنید، Entity Developer از آن بهره می گیرد، و طبق خواسته شما کلاس ها را آرایش می کند، مثلا شما می توانید مشخص کنید که کلاس شما باید دارای تابع Equal باشد (مراقب باشید که این کار با بررسی کلید اصلی صورت می گیرد و ممکن است در روابط چند به چند یا یک به چند با وجود Cascade و مدیریت در سمت "چند"، باعث نقص در ثبت اطلاعات شود). یا برای شما interface هایی مثل IValidatable را پیاده سازی کند، یا رویداد هایی را فراهم آورد.
نحوه با هم بودن یا مجزا بودن Map فایل ها نیز توسط این بخش صورت می گیرد. و علاوه بر همه این ها به شما کمک می کند که Validation های عمومی را به صورت خودکار و Validation های مبتنی بر Regex را با نوشتن الگوی آن Regex پیاده سازی کنید.



نتیجه گیری:
به طور کلی این ابزار بسیاری از نیاز های من را در یک مدل پیچیده فراهم آورده. این مدل شامل ارث بری چند سطحی است و همچنین از نوع داده پیچیده و روابط چند به چند بهره می برد. البته در ارث بری چند سطحی این ابزار کمی مشکلات به همراه دارد، مثلا در حالتی که شما بخواهید ارث بری چند سطحی داشته باشید، نمی توانید از IClonable استفاده کنید یا از Property Change Notifiers بهره ببرید. در غیر این صورت Entity Developer نتیجه را برای شما حاصل می کند، اما فیلد های مربوط به هر Property در سطوح میانی ارث بری را ایجاد نکرده و در متد Clone نیز یک Object خام بر می گرداند، و شما باید در کد خود Backing Field ها را به صورت دستی اضافه کنید. ولی در شرایط عادی این نرم افزار سرعت بالایی به کار شما می بخشد.


پشتیبانی:
این نرم افزار دارای پشتیبانی بالایی از طرف شرکت devart (که سازنده این محصول است) می باشد، و در صورت تماس آنها به سوالات شما سریعا پاسخ داده یا مشکل را حل می کنند... برای مثال، در زیر دو Email ارسالی به بنده قابل مشاهده است:
Hello,

Thank you for the feedback on our product. The responses of our customers are important for us.

> Issues I Experience...
Thank you for the report. We have reproduced the issues you have described. We will investigate them and notify you about the results as soon as possible.
As a temporary workaround, please make these changes to your model:
1) open Properties of the "NHibernate" template and set the "Property Change Notifiers" property to False;
2) open Properties of the "House" class and set "Do Not Implement Cloneable" property to True;
3) save the changes and rebuild your project.

> Documentation: Poor (Neutral)
Please specify the aspects that should have a better description in our documentation. We are working on our docs and your feedback will help us to make it better for you.

Best regards,
Mariia
Devart Team
www.devart.com


Hello Hassan,

> Issues I Experience...
The bug with the wrong code generation for Table Per Type (TPT) hierarchy when NHibernate template is used with Property Change Notifiers=True and Implement Cloneable=True options is fixed.
New build of Entity Developer 5.7.549 is available for download. It can be downloaded from http://www.devart.com/entitydeveloper/download.html (trial version) or from Registered Users' Area (for users with active subscription only). For more information, please refer to http://forums.devart.com/viewtopic.php?f=32&t=31273

If you have any further questions regarding discounts on purchasing Devart products, please contact our Sales department at sales@devart.com

Best regards,
Mariia
Devart Team
www.devart.com

لینک سایت سازنده:
http://www.devart.com/
لینک دانلود:

https://www.devart.com/entitydeveloper/
پایان.