طراحی ORM برای Entity Framework

جمعه 15 خرداد 1394

دراین مقاله قصد داریم به توصیف چگونگی رسم داده ها با ابزار Entity Developer بپردازیمORM یک لایه مترجم بین زبان برنامه‌نویسی و پایگاه داده رابطه‌ای است که این دو را به هم تبدیل می‌کند و در عمل باعث می‌شود که این دو حیطه کاملا متفاوت ،زبان یکدیگر را به خوبی بشناسند و با هم تبادل اطلاعات داشته باشند. یک ORM قوی ، برنامه را از نوع پایگاه داده استفاده شده، جدا می‌کند. این کار باعث می‌شود که استقلال نسبت به نوع پایگاه داده حفظ شود.

طراحی ORM  برای Entity Framework

ORM چیست؟
ORM یک لایه مترجم بین زبان برنامه‌نویسی و پایگاه داده رابطه‌ای است که این دو را به هم تبدیل می‌کند و در عمل باعث می‌شود که این دو حیطه کاملا متفاوت ،زبان یکدیگر را به خوبی بشناسند و با هم تبادل اطلاعات داشته باشند. یک ORM قوی ، برنامه را از نوع پایگاه داده استفاده شده، جدا می‌کند. این کار باعث می‌شود که استقلال نسبت به نوع پایگاه داده حفظ شود.
ORM ارتباط های دایمی و احتمالا پیچیده با پایگاه داده را انجام می دهد ونیازی به انجام اعمال تکراری وکد نویسی هایی تکراری توسط برنامه نویس در هر بار ذخیره فیلد و رکورد جدید و بازیابی اطلاعات و...نیست.از طریق ارتباطی که بوسیله ORM بین اشیاء و پایگاه داده ایجادمیشود می توان اطلاعات اشیاء را با صدا زدن یک متد در پایگاه داده ی خود ذخیره کنید.این ساده سازی که توسط ORM فراهم می شود باعث میشودبا کدهای کمتری کارهایی نظیر بازیابی اطلاعات را انجام دهیم وبعدها اگه خواستیم تغییراتی اعمال کنیم به راحتی بتونیم بازسازی وتغییرش بدیم.
ORM  محدود به هیچ زبان خاصی نیست و تنها یک تکنیک و سیستم است که می تواند در زبانهای مختلف پیاده سازی شود .

حالا اگر از یک ORM مثلا Entity Framework استفاده کنید می توانید این جداول را به کلاس های متناظر در برنامه خود متصل (Mapping) نمایید، و به جای کدنویسی و پیاده سازی روش اتصال و اجرا دستور بر روی بانک به ORM خود اطلاعات دهید که این اشیاء ایجاد و درخواست ذخیره سازی آن ها را دارید. به این ترتیب و با استفاده از Mapping که شما در تعریف این اشیا نموده اید و بدون نوشتن حتی یک خط کد مربوط به ارتباط بانک اطلاعاتی وظیفه ذخیره این اشیا را به ORM خود محول کنید.
در  این مقاله قصد داریم  طریقه رسم ORM  را با استفاده از ابزار Entity Developer به شما دوستان آموزش بدهیم
در این مرحله پس از نصب و راه اندازی ،ابزار Entity Developer راباز کرده وشروع به ایجاد یک مدل جدید میکنیم

این نرم افزار قابلیت کار با 3 روش مرسوم ارتباط با پایگاه داده را دارد. که 2 روش آن در C#‎ و دیگری در جاوا بیشترین استفاده را دارا می باشند.
1)    LINQ To SQL
2)    NHibernate
3)     Entity Framework
برای شروع به کار با ابزار Entity Developer ابتدا بایستی نسخه اکسپرس آن را بر روی ویژوال استادیو نصب کنید
(نسخه اکسپرس رایگان است )
سپس یک پروژه از هر نوعی باز کرده و روی solution راست کلیک کرده و    در گزینه
  Add>NewItem > Devart linq  To Sql راانتخاب میکنیم

 

حال در این مرحله ماباید تصمیم بگیریم که چه مدلی برای پیاده سازی استراتژی خود نیاز داریم  ما در این مرحله از Model Frist  استفاده میکنیم تفاوت Model Frist   با DateBase Frist  در این است که در اولی همان طور که از نامش مشخص است هیچ جدول و بانک اطلاعاتی ندارد ولی در دومی شما در SQLخود بانک اطلاعاتی را از قبل ایجاد کردید.


در این مرحله با دو گزینه رو به رو هستیم که گزینه اول (Yes) ،  باعث میشود که مدل ما  به صورت خودکار اجازه به روزرسانی بانک اطلاعاتی را داشته باشد  
و گزینه دوم(No) باعث میشود که علاوه بر آن که  موارد  بالا غیر فعال بشود ، امکان اضافه کردن داداه ی بیشتر به طراح ،داده میشود
که ما در این جا گزینه دوم را انتخاب میکنیم

در این صفحه میتوانیم   نام مدل را که به  عنوان فضای نام  در برنامه مورد استفاده قرار میگیرند  را ایجاد کنیم  و همچنین در این  صفحه نیز ، به ما این امکان را میدهد اسم مدل را در connection string برنامه ایجاد کنیم.

  نسخه اکسپرس Entity Developer ،تعدادی قالب برای پیاده سازی  کد ها با توجه به مدل انتخاب شده ، درون خود دارد و بسته به مدل انتخاب شده میتوان این قالب ها را انتخاب کرد . شما هم میتوانید بسته به نوع مدل و کد نویسی خود ،قالب خود را انتخاب کنید .

در این پنجره شما میتوانید قالب های زیادی را انتخاب کنید برای مثال اگر شما نیاز دارید که کلاس link To Sql خود از ویندوز فون  نیز پشتیانی کند بایستی از مدل و قالب ویندوز فون هم استفاده کنید. ابزار Entity Developer به راحتی از Asp.Net و Mvc   نیز پشتیبانی میکند


پیاده سازی مدل بر اساس نیاز کار:
پس از ایجاد مدل ، ما نیاز به یک ساختار داده ای داریم و همان طور که میدانید ما چون از code Frist استفاده کردیم هیچ داده ی نداریم برای آنکه بتوان مدل خود را با داده هایی پر کنیم باستی  هماند شکل زیر جدولی را به مدل خود اضافه کنیم برای این کار کافی است روی صفحه راست کلیک کرده و گزینه Newclass>Addرا انتخاب کنیم ویا  برای انتخاب کلاس جدید هم میتوان از کلید میانبر Alt+C  و یا هم میتوان  مانند  شکل زیردر قسمت Toolbar آیکون AddClassرا انتخاب کنیم.


در این مرحله به ثبت  داده در جدول یا همان کلاس، متناسب با نیاز خود  میپردازیم.برای ثبت داده در جدول، روی جدول راست کلیک کرده و گزینه Add Property  را میزنیم ومتناسب با نیاز خود داده و جدول ثبت میکنیم

 

در این مثال ما ابتدا یک جدول به نام Booking  ایجاد کردیم و سپس همانند بالا شروع به ثبت داده میکنیم همان طور که میبینید جدول ما به صورت یک دیاگرام نشان داداه شده  حال برای آن که با موضوع ارتباط بین جداول(Relationship) در این ابزار نیز آشنا شویم دو عدد جدول دیگر به نام PriorityBooking و FutureBooking ایجاد میکنیم و برای ایجاد ارتباط بین جداول کافی است کلید Alt+Iرا فشار دهیم که  با تصویری همانند زیر روبه رو میشویم

 و برای دیدن روابط شماتیک با استفاده از ORM روی پروژه راست کلیک کرده و گزینه code Map   را مزنیم  با تصویر زیر روبه رو میشویم

و در آخر ابزار Entity Developer  به ما این امکان را میدهد که از مدل خود Script  بگیریم برای این کار کافی است روی برنامه راست کلیک کرده و گزینه " "Generate Database Script from Modelیا از کلید میانبر Alt + Ctrl + G استفاده کنیم.

 

-- Script was generated by Devart Entity Developer, Version 5.7.594.0  
-- Script date 27.04.2015 17:59:43  
-- Target Server: SQL Server  
-- Server Version: 2014  
  
--  
-- Creating a table dbo.Ibans  
--  
CREATE TABLE dbo.Ibans (  
   Iban_ID BIGINT NOT NULL,  
   Name VARCHAR(8000) NOT NULL,  
   Comment VARCHAR(8000),  
   CONSTRAINT PK_Ibans PRIMARY KEY (Iban_ID)  
)  
GO  
  
--  
-- Creating a table dbo.Bookings  
--  
CREATE TABLE dbo.Bookings (  
   ID_Booking BIGINT NOT NULL,  
   Balance DECIMAL NOT NULL,  
   Antedated DATETIME2 NOT NULL,  
   IsBookingDone BIT NOT NULL,  
   Priority INT NOT NULL,  
   CONSTRAINT PK_Bookings PRIMARY KEY (ID_Booking)  
)   

موفق باشید

 

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 2k بازدید
  • 1 تشکر

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

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