ایمیل
admin [at] VaniaIT.Com
امور مشتریان
پرتال کاربران - CRM
تلفن
9122830795(98+)
طراحی وب سایت

آموزش Entity Framework 6 Code First - مقدمه


<p style="text-align:justify">همانگونه که در کتاب آموزش قبلی یعنی &laquo;<a href="http://www.farjadp.com/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-asp-net-mvc-5-%d8%a8%d9%87-%d8%b2%d8%a8%d8%a7%d9%86-%d8%b3%d8%a7%d8%af%d9%87/" target="_blank" title="آموزش MVC.Net 5"><strong>شروع کار با MVC 5</strong></a>&raquo; قول داده بودم ،&nbsp;آموزش <strong>Entity Framework 6 Code First</strong> به کمک MVC.Net را به مرور در سایت شرکت طراحی وبسایت وانیا قرار خواهم داد. در این مباحث شما را با مفاهیم پایه ای&nbsp;Entity Framework آشنا خواهم کرد و همزمان نیز پروژه ای را شروع و به پایان می رسانیم. این نوشتارها و آموزش ها بر اساس دو کتاب زیر &nbsp;می باشد :</p>

<p style="text-align:justify"><span style="color:#800080">[icon icon=&quot;fa-book&quot;]</span> کتاب&nbsp;Getting Started with Entity Framework 6 Code First using MVC 5 انتشارات Microsoft Technology</p>

<p style="text-align:justify"><span style="color:#800080">[icon icon=&quot;fa-book&quot;]</span> کتاب&nbsp;Programming Entity Framework Code First انتشارات O&#39;REILLY</p>

<p style="text-align:justify">دوستانی که برای بار اول است با نوشتارهای بنده روبرو می شوند باید عرض کنم که بنده (<a href="http://www.mortezap.ir/" target="_blank" title="مرتضی پورمحمد - برنامه نویس دات نت ">مرتضی پورمحمد</a>) این کتاب ها را به زبان محاوره ای ترجمه و تجربیات شخصی را نیز در آنها دخلی می کنم و برخلاف دیگر دوستان مترجم و دانشمند! تنها به ترجمه ی صِرف بسنده نمی کنم. پس اگر جایی از نوشتارهایم برخلاف گفته ها و یا فصول کتاب/ها است، به همین علت می باشد.<!--more--></p>

<p style="text-align:justify">و اما پروژه ای که در این مسیر با کمک شما آن را به نتیجه می رسانیم &laquo;دانشگاه آموزشی وانیا&raquo; می باشد که در کتاب&nbsp;Getting Started with Entity Framework 6 Code First using MVC 5 تحت عنوان &laquo; Contoso University &raquo; معرفی شده است. پروژه ی فوق را توسط تکنولوژی های زیر پیگیری خواهیم کرد</p>

<p dir="ltr" style="text-align:justify">[icon_list icon=&quot;fa-kre&quot;]</p>

<ul dir="ltr">
    <li dir="ltr">Visual Studio 2014 Update 4</li>
    <li dir="ltr">Net 4.5</li>
    <li dir="ltr">Entity Framework 6 (<a href="https://www.nuget.org/packages/EntityFramework" target="_blank" title="Nuget Gallery - Entity Framewotk 6.1.3">EntityFramework 6.1.3 NuGet package</a>)</li>
</ul>

<p dir="ltr" style="text-align:justify">[/icon_list]</p>

<p style="text-align:justify">همچنین پیشنهاد می کنم قبل از شروع این مباحث ، آشنایی اندکی با مباحث زیر داشته باشید</p>

<p dir="ltr" style="text-align:justify">[icon_list icon=&quot;fa-tasks&quot;]</p>

<ul dir="ltr">
    <li dir="ltr">HTML / CSS / JQuery</li>
    <li dir="ltr">C#</li>
    <li dir="ltr">MVC.Net 5</li>
</ul>

<p dir="ltr" style="text-align:justify">[/icon_list]</p>

<p style="text-align:justify">در صورت داشتن هرگونه سوال و یا نظر نیز می توانید از طریق راه های ارتباطی زیر در تماس باشید:</p>

<p style="text-align:justify">[icon_list icon=&quot;fa-info-circle&quot;]</p>

<ul>
    <li>تلفن شرکت : ۰۲۱۶۶۳۵۹۸۹۸</li>
    <li>تلفن همراه : ۰۹۱۲۲۸۳۰۷۹۵</li>
    <li>پست الکترونیک : manager [at] vaniait [dot] com</li>
    <li>کامنت زیر هر مقاله</li>
</ul>

<p style="text-align:justify">[/icon_list]</p>

<p style="text-align:justify">و اما شروع. برای شروع باید به ادبیات مشترکی با یکدیگر برسیم تا زبان همدیگر را بهتر بفهمیم.</p>

<h2 style="text-align:justify"><span style="color:#800080">[icon icon=&quot;fa-windows&quot;]&nbsp;ORM چیست ؟</span></h2>

<p style="text-align:justify">قبل از این که بخواهیم باEntity Frameworkآشنا شویم، بهتر است مفهومORMرا بدانیم.ORMیا Object Relational Mappingابزاری است که به وسیله آن می توان جداول پایگاه داده را پردازش کرد و آنها را به فرمت شیءنگاشت کرد که در کدنویسی خواناتر باشند. در کدنویسی به جای این که به صورت مستقیم با جداول پایگاه داده کار کنیم بر روی اشیاء کار می کنیم. به این اشیاء موجودیت یا Entity گفته می شود.</p>

<h2 style="text-align:justify"><span style="color:#800080">[icon icon=&quot;fa-windows&quot;] &nbsp;Entity Framework چیست ؟</span></h2>

<p style="text-align:justify">Entity Framework درواقع یکی از قدرتمندترین ORM های دسترسی به منابع داده است. به وسیله Entity Framework شما می توانید با انواع مختلف دیتابیس از قبیل SQL Server ، Sqlite و &hellip; کار کنید بدون اینکه نیاز به عملیات مستقیم در دیتابیس داشته باشید. این تکنولوژی چند ویژگی مهم دارد که توجه اکثر برنامه نویسان را به خود جلب کرده است.</p>

<p style="text-align:justify"><span style="color:#ff0000">[icon_list icon=&quot;fa-th&quot;]</span></p>

<ul>
    <li>کار کردن با Entity Framework بسیار ساده است.حتی یادگیری آن ده ها برابر ساده تر از مدل های مشابه مانند ADO.NET است.</li>
    <li>سرعت در دسترسی به داده ها و اجرای دستورالعمل ها بسیار بالاست و در پروژه های بزرگ نیز می توان از آن استفاده کرد.</li>
    <li>پیاده سازی آن بسیار سریع است و در زمان صرفه جویی می شود.</li>
    <li>دیتابیس شما در قالب کلاس های شی گرا با سایر اجزای پروژه یکپارچه می شود و علاوه بر خوانایی بالا در کدنویسی، عملیات ارتقا و بروزرسانی نرم افزاری را سرعت می بخشد و از بروز خیلی از خطاها جلوگیری می کند.</li>
    <li>در برخی از حالت ها شما نیاز به طراحی پایگاه داده ندارید! زیرا با استفاده از امکانات EF خود برنامه دیتابیس را از روی مدل یا کلاس های شما می سازد.</li>
</ul>

<p style="text-align:justify"><span style="color:#ff0000">[/icon_list]</span></p>

<p style="text-align:justify">&nbsp;</p>

<h2 style="text-align:justify"><span style="color:#800080">[icon icon=&quot;fa-windows&quot;] انواع دیتامدل در Entity Framework</span></h2>

<p style="text-align:justify">در کتاب قبلی کمی درباره ی این مدل ها توضیح داده و قول داده بودم که در این کتاب مفصل در خصوص هر کدام صحبت کنم . چون مقاله ی حاضر مقدمه می باشد ، هر کدام را در فصل های مربوط به خود مفصل به بحث و بررسی خواهیم پرداخت. اما این مدل ها کدامند :</p>

<p style="text-align:justify">[icon_list icon=&quot;fa-th&quot;]</p>

<ul>
    <li style="text-align:justify"><span style="color:#339966"><strong>Database First Modeling</strong></span> : در این روش مدل ما از روی یک پایگاه داده موجود ایجاد می شود و می توان از طریق Entity Data Model Designer در Visual Studio تغییرات لازم را بر روی مدل انجام داد.</li>
    <li style="text-align:justify"><span style="color:#339966"><strong>Model First Modeling</strong></span> : در این روش ابتدا مدل توسط برنامه نویس در محیط Entity Data Model Designer ایجاد میشود، سپس بطور خودکار پایگاه داده و کدها و اسکریپ های موردنیاز از روی مدل ساخته میشوند.</li>
    <li style="text-align:justify"><span style="color:#339966"><strong>Code First Modeling</strong></span>: در این روش کلاس های معادل موجودیت ها (جداول) توسط برنامه نویس نوشته میشوند (این کلاس ها POCO-Plain OLD CLR Objects نامیده میشوند) سپس EF بطور خودکار پایگاه داده و مدل را از روی این کلاس ها میسازد. ما در مقالات حاضر با این نوع بیشتر آشنا شده و پروژه ی حاضر نیز تحت همین مدل سپری خواهد شد</li>
</ul>

<p style="text-align:justify">[/icon_list]</p>

<p style="text-align:justify">&nbsp;</p>

<h2 style="text-align:justify"><span style="color:#800080">[icon icon=&quot;fa-windows&quot;] مزایای استفاده از Entity Framework چیست ؟</span></h2>

<p style="text-align:justify">[icon_list icon=&quot;fa-th&quot;]</p>

<ul>
    <li>سطح یادگیری ساده: کار با EF به نسبت بقیه ORMها تقریبا ساده تراست.</li>
    <li>پشتیبانی از پایگاه داده های مختلف در نسخه ۴ به بعد (در حال حاضر نسخه ۶٫۲ وجود دارد).</li>
    <li>توسعه فعال: Microsoft، قصد جدی در توسعه این قابلیت دارد. اضافه شدن امکانات زیاد به نسخه ۴ به بعد نشاندهنده همین مطلب هست. مثل امکان Code First، Lazy Loading و &hellip;که در نسخه ۴ به EF اضافه شده اند.</li>
    <li>توسعه دهندگان قادرند تا با ساختار شیء گرایانه سازگار با انواع سیستم های مدیریت داده کار کنند.</li>
    <li>پشتیبانی کامل از Linq.</li>
    <li>نصب خودکار با Visual Studio.</li>
    <li>مرتبط شدن چندین مدل مفهومی به یک ساختارپایگاه داده.</li>
    <li>برنامه های کاربردی قادر خواهند بود تا در مدل مفهومی خود (conceptual model) محوریت بیشتری به خود برنامه ببخشند به گونه ای که شیء گرایی، ارث بری، گونه ها (Type) های پیچیده تر و روابط بین جداول و اشیاء بهتر پیاده سازی شوند.</li>
    <li>برنامه نویس ها از کدنویسی زیادی پیچیده رها می شوند.</li>
    <li>بدون کوچک ترین تغییر کد برنامه خواهیم توانست مدل ارتباط بین ساختار پایگاه داده و مدل مفهومی را تغییر دهیم.</li>
</ul>

<p style="text-align:justify">[/icon_list]</p>

<p style="text-align:justify">&nbsp;</p>

<h2 style="text-align:justify"><span style="color:#800080">[icon icon=&quot;fa-windows&quot;] چه زمانی از EF استفاده می کنیم؟</span></h2>

<p style="text-align:justify">[icon_list icon=&quot;fa-th&quot;]</p>

<ul>
    <li>زمانی که بخواهیم برنامه ما به پایگاه داده های دیگری به جز Microsoft SQL Serverنیز دسترسی پیدا کند.</li>
    <li>زمانی که بخواهیم domain models برای برنامه مان تعریف کنیم و از آن به عنوان لایه persistenceاستفاده نماییم.</li>
    <li>زمانی که از یک راهکار ORMی استفاده کنیم که ممکن است کلاسهایمان رابط های ۱:۱ با پایگاه داده داشته باشد یا ممکن است ساختاری بسیار متفاوت و پیچیده در ارتباط با پایگاه داده دارا باشد.</li>
    <li>زمانی که میخواهیم از یک ORM استفاده کنیم که ساختارهای سلسله مراتبی در آن، معادل های پایگاه داده ای متفاوتی داشته باشد. مانند وقتی که جدولی جهت نگهداری سلسله مراتب، جداولی برای هر یک ازکلاسها وجدولی جهت نگهداری گونه ای (Type) خاص داریم.</li>
    <li>زمانی که وقتی میخواهیم از LINQ جهت نوشتن Queryها استفاده کنیم درحالیکه Queryدرپایگاه داده به شیوه خاص و درسلطه سازنده آن عمل میکند.</li>
    <li>زمانی که استفاده از کلاسهایی که خودمان نوشتیم، درکنار کلاسهای تولیدشده توسط سیستم یا ارث بری ازکلاسهای پایه یا پیادهسازی رابطها درکلاسها.</li>
    <li>زمانی که استفاده از یک ORM با حفظ کارآیی و امکان بهبود آن از طریقStored Procedureها و Queryهای کامپایل شده.</li>
</ul>

<p style="text-align:justify">[/icon_list]</p>

<p style="text-align:justify"><span style="color:#ff0000">&nbsp; &nbsp;&nbsp;</span></p>

<p style="text-align:justify">و نکته ی اخر اینکه ما در مقالات پیش رو قصد راه اندازی یک سایت دانشگاه فرضی را داریم که دانشجو بتواند در آن ثبت نام کند و سپس اقدام به واحد گیری نماید و پس از انتخاب واحد بتواند شهریه ی دانشگاه خود را به صورت آنلاین واریز نماید. این سایت دانشگاه بخش مدیریت دارد که مدیریت سایت می تواند دپارتمان های آموزشی مختلف تعریف، اساتید را اضافه و دروس مختلف را برای واحد گیری دانشجویان تعریف نماید.</p>

<p style="text-align:justify">/ پایان مقدمه /</p>