میتوان ابتدا مدل مفهومی را ساخت و سپس از روی آن با ابزارهای موجود پایگاه داده معادل را به وجود آورد. نام این ابزار Create Database Wizard میباشد.
این ویزارد برای اجرا شدن به موارد زیر نیاز دارد:
۱- مدل مفهومی معتبر: این ویزارد نیازی به وجود فایل edmx. ندارد بلکه کافیست محتوای csdl فایل edmx. معتبر باشد.
۲- دسترسی کافی برای افزودن فایلها به پروژه VS کنونی: پس از کامل شدن عملیات، ویزارد یک فایل sql. را به پروژه میافزاید که شامل DDL مربوط برای ساخت پایگاه داده است.
۳- وجود ارتباط با پایگاه داده: فقط نسخههای ۲۰۰۸ ، ۲۰۰۵ ، CE و Azure پشتیبانی میشوند.
به محض تکمیل موارد بالا، ویزارد کارهای زیر را انجام میدهد:
۱- SSDL و MSL که معادل CSDL تهیه شده است، ساخته میشود. فایل edmx. با SSDL و MSL تولید شده بهروزرسانی میشود.
۲- DDL قابل اجرا در یک فایل sql. ذخیره میشود. این فایل از استراتژی table-per-type پیروی میکند.
۳- اطلاعات مربوط به connection string به فایل پیکربندی برنامه اضافه میشود.
نکته مهم این است که DDL ساخته شده به صورت خودکار اجرا نمیشود و باید آن را به صورت دستی اجرا کرد.
زمان به ما ثابت کرده که پایگاه دادههای رابطهای ساختار مناسبی برای ذخیرهسازی دادهای هستند، همچنین به این نتیجه رسیدهایم که برنامهنویسی شیءگرا یک رویکرد بسیار خوب و قوی برای پیادهسازی سیستمهای بسیار پیچیده میباشد.
ORM عملا یک لایه مترجم بین زبان برنامهنویسی و پایگاه داده رابطهای است که این دو را به هم تبدیل میکند و در عمل باعث میشود که این دو حیطه کاملا متفاوت زبان یکدیگر را به خوبی بشناسند و با هم تبادل اطلاعات داشته باشند. این مفهوم که مانند یک پل بین این دو حیطه میماند قابلیتهای زیادی را برای ما تهیه مینماید.
به طور اختصار میتوان گفت که وظیفه ORM پایدار کردن خودکار آبجکتهای موجود در یک برنامه روی جداول در پایگاه داده رابطهای میباشد که برای این کار از متادیتاهایی برای نگاشت بین آبجکتها و پایگاه داده استفاده مینماید.
در این زمینه به نکات زیر توجه نمایید که شاید برای روشن شدن اینکه چرا ORMها بسیار برای کار مناسب هستند، به شما کمک نمایند:
۱- تجارب نشان میدهند که تا حدود ۳۰ درصد از کدهایی که برای نوشتن برنامه در NET. لازم است مربوط به ثبت داده و کار با دادهها میباشد.
۲- برای نوشتن کدهای SQL در NET. باید آنها را به صورت رشته متنی یا به صورت stored procedure در خود پایگاه داده مینوشتیم که این کار باعث بروز خطا در زمان اجرا میشد و ما هیچ کنترلی برای بررسی خطا در زمان کامپایل برنامه نداشتیم.
۳- یکی از پرهزینهترین بخشهای هر پروژهای، مدلسازی آن است. مدلسازی در زبان شیءگرا کاملا با مدلسازی در پایگاه دادههای رابطهای متفاوت است. ما میتوانیم این مدلسازی را که بین هر دو حیطه مشترک باشد به صورت یک به یک انجام دهیم یعنی هر جدول در پایگاه داده با یک موجودیت (entity) در کلاسهایمان معادل شود و هر ستون از جدول با مشخصه (property) آن کلاس و کاملا به صورت معادل پیادهسازی شود ولی این کار باعث میشود که ما قابلیتهای زیادی را که در زبانهای شیءگرا داریم مانند ارثبری و چندریختی را از دست بدهیم.
۴- با ORM دیگر نیاز ندارد که خودمان را درگیر بخشهای سطح پایین و خستهکننده هر سیستم کنیم و این باعث تمرکز بهتر و بیشتر ما روی مشکلات کاری میشود، در نتیجه به بهرهوری بالاتری دست میابیم.
۵- سادهسازی سیستم باعث خوانا شدن آن و جلوگیری از اتلاف زمان میشود. ما به جای آنکه کدهای زیادی را برای کارهای کوچک بنویسیم، با مقدار کم کد میتوانیم همان کار را انجام دهیم. از همه مهمتر اینکه سیستمی با مقدار کد کمتر، بهتر بازسازی میشود.
۶- خیلیها از ORM استفاده نمیکنند به دلیل اینکه فکر میکنند باعث افت کارایی (performance) میشوند. این گفته تا حدودی صحیح است ولی این یک گفته کامل نیست. اولا ما باید ببینیم که ارجحیت ما چیست. باید بیان کرد که ORM ها اگر درست استفاده شوند تاثیر منفی بسیار کمی روی کارایی خواهند داشت، در عوض در کنار آنها ما چیزهایی بدست میآوریم که بسیار ارزشمندتر است. لازم به ذکر است که ORMهای قوی مانند NHibernate حتی میتوانند از ADO .NET کلاسیک هم کارایی بهتری داشته باشند. اگر از cache و عملیات دستهای (batching) استفاده نماییم، میتوانیم به کارایی حتی بالاتر از ADO .NET کلاسیک دست یابیم.
۷- یک ORM قوی مانند NHibernate ، برنامه شما را از نوع پایگاه داده و SQL Dialect استفاده شده، جدا میکند. این کار باعث میشود که استقلال شما نسبت به نوع پایگاه داده حفظ شود.