Migration در Entity Framework Code First
سه شنبه 14 مهر 1394در این مقاله قصد داریم توضیحاتی درباره Entity Framework و استفاده از روش های مختلف در آن و خصوصا روش Code First ارائه دهیم . Entity Framework چیست و چرا از آن استفاده می شود. راه کارهای موجود در آن چیست و روش مهاجرت به چه صورت انجام می گیرد.
Entity Framework
Entity Framework یک چارچوب نقشه برداری یا نگاشت رابطه ای اشیاء (ORM) است که توسعه دهندگان را قادر می سازد به کار با داده های رابطه ای که یک شیء خاص دامنه دارند، و حذف شدن استفاده از بسیاری از کدهای دسترسی به داده ها که معمولا توسعه دهندگان برای نوشتن نیاز دارند.
Entity Framework یک برتری نسبت به ADO.net دارد که به توسعه دهندگان یک مکانیزم خودکار برای دسترسی و ذخیره سازی داده ها می دهد.
توسعه دهندگان می توانند برای گرفتن داده ها از پایگاه داده با استفاده از Entity Framework کوئری های LINQ بنویسند.
Entity Framework برای بازیابی و دستکاری داده به عنوان اشیاء از نوع strongly به ما کمک می کند.
راه کارهای Entity Framework
Model First .: مدل پایگاه داده در زمان اولین بار استفاده از ابزار طراحی ORM در ویژوال استودیو ساخته می شود. هنگامی که مدل متشکل از سازمان و روابط طراحی شد، پایگاه داده فیزیکی و کلاس از مدل با کمک از Entity Framework به صورت خودکار تولید خواهد شد.
Data Base First .: از همان ابتدا پایگاه داده ایجاد شده است و یا می توانیم از پایگاه داده های موجود استفاده کنیم و سپس به کمک Entity Framework کدهای مورد نیاز به صورت خودکار تولید خواهد شد.
Code First .: ایجاد یک مجموعه ای از کلاسها . اول کد و پایگاه داده به صورت خودکار توسط کمک های Entity Framework تولید خواهد شد.
چرا از Entity Framework استفاده کنیم ؟
دو نوع از مدل یا گروه ها وجود دارند مانند:
Logical or Storage Model . (منطقی یا مدل ذخیره سازی ) : معاملات با جداول، کلید اصلی، کلید های خارجی و غیره می باشد که توسط یک گروه با عنوان پایگاه داده محور به کار گرفته می شود.
Conceptual or Object Oriented Domain Model . ( مفهومی و یا مدل دامنه شی گرا) - معاملات با اشیاء، خواص، ارث بری پلی مورفیسم و غیره می باشد که توسط یک گروه با عنوان کاربرد محور به کار گرفته می شود.
. به عنوان یک نتیجه از این دو مدل عدم تطبیق امپدانس رخ می دهد و توسعه دهندگان وقت و انرژی زیادی در نوشتن یک کد دسترسی به داده ها مانند Ado.net برای نگاشت و وارد کردن آن به پایگاه داده اختصاص می دهند .
. چارچوب Ado.net Entity به دنبال برطرف کردن مشکل با ارائه لایه ای انتزاعی بین مدل منطقی داده ها و مدل دامنه کاربردی است .
روش مهاجرت Code First در Entity Framework
. به طور عمده در رویکرد توسعه دامنه محور (DDD) استفاده می شود. ما می توانیم در طراحی دامنه تمرکز کنیم و بر اساس نیازهای دامنه شروع به نوشتن کلاس ها کنیم.
. Api در Code First یک پایگاه داده بر اساس کلاس موجودیت و پیکربندی آن ایجاد خواهد کرد.
. در Code First درEntity Framework 4.2 و قبل تر از آن، به استفاده از یک روش Initializer پایگاه داده و رسیدگی یا حفظ داده ها در زمانی که یک تغییر در مدل ایجاد می شد نیاز داشتیم.
. روش Migration درCode First در مقایسه با نسخه های قبلی بسیار مفید است، که قادر است تغییرات را دنبال و به صورت هوشمند به تغییرات مدل رسیدگی کند. بدون نیاز به فکر درباره حذف و دوباره ایجاد کردن داده ها.
. Code First به شما اجازه می دهد یک دیتابیس جدید اضافه کنید یا دیتابیس موجود را بر اساس کلاس مدل خود را با استفاده از Pakage manager موجود روی ویژوال استودیو به روز رسانی کنید.
مزایای استفاده از Code First در Entity Framework
Entity Framework . توسعه دهندگان را به ایجاد نرم افزار دسترسی به داده ها توسط برنامه نویسی مدل برنامه مفهومی به جای برنامه نویسی دوباره طرح ذخیره سازی داده های رابطه ای قادر می سازد.
. نرم افزار می تواند در شرایط استفاده از مدل مفهومی محور، از جمله انواع مانند ارث بری، اعضای پیچیده و نگاشت ها کار کند.
. Entity Framework یک ابزار ORM است که یک API ساده برای انجام عملیات CRUD فراهم میکند.
. Entity Framework همچنین به ما کمک می کند تا برخی از عملیات DDL و DML بصورت خودکار و نه به صورت دستی انجام شود.
. Entity Framework شامل کلاس های نوع Strongly می شود ، از جمله :
. Intellisense support
Compile time .
. Debugger option
Entity Framework . به طور خودکار ارتباطات و نگاشت ها را برای شما انجام می دهد. بنابراین ما توسعه دهندگان به نوشتن بسیاری از کد های دسترسی به داده ها نیاز نداریم.
. زمان زیادی ذخیره خواهد شد و به ما کمک می کند تا به سرعت نرم افزارها را توسعه دهیم و تمرکز بیشتر بر روی جزئیات کار داشته باشیم .
برای روشن شدن توضیحات بالا یک نمونه مثال می زنیم .
یک پروژه جدید از نوع MVC ایجاد میکنیم.
قالب مورد نیاز را انتخاب میکنیم .
برای نصب Entity Framework 5 به شکل زیر عمل میکنیم .
به پوشه Tools بروید -> Pakage Manager Console <- Library Pakage Manager
با کد زیر Entity Framework را نصب میکنیم :
install-package entityFramework -version 5.0.0.0
در روت پروژه یک فولدر با نام DBContext ایجاد میکنیم.
یک کلاس برای DBContext ایجاد میکنیم که مانند یک پل بین دیتابیس و LINQ عمل میکند.
DBContext یک لایه مفهومی بین برنامه و دیتابیس فراهم میکند.
DBSet نماینده جدولی که در دیتابیس حاضر است خواهد بود.
به web.Config بروید و کانکشن مورد نیاز را ایجاد کنید.
خاصیت های مورد نیاز کانکشن مانند data source و initial catalog و name و ... را تنظیم کنید.
به کنسول Pakage manager بروید .
برای استفاده از روش مایگریشن دستور زیر را اجرا کنید :
Enable-Migrations -ContextTypeName DNSContext
Code-First Migrations از داده ها مراقبت می کند. پس ما نیازی به نوشتن متد های پایگاه داده که در ورژن های قدیمی تر استفاده می شد نداریم.
اولین بار بعد از فعال کردن Migration برای استفاده از آن باید یک Migration اضافه کنیم.
اضافه کردن Migration یک فایل Migration و کدهای sql ایجاد میکند که تا زمانی که دستور update-database راه اندازی نشده است در سرور sql اجرا نخواهد شد.
فایل کد Migration تولید شده است.
دستور update-database ، بوسیله اجرای کدی که در فایل Migration است ، دیتابیس را راه اندازی خواهد کرد .
زمانی که آن را برای اولین بار ایجاد میکنیم ،دیتابیس جدید با توجه به خواصی که به Connection string داده شده بود دیتابیس را می سازد .
یک مدل با نام Course به صورت زیر ایجاد میکنیم .
در کلاس context یک خاصیت DbSet اضافه میکنیم.
Migrtion را اضافه و دیتابیس را آپدیت میکنیم .
ایجاد یک عملیات CRUD با استفاده از Scaffolding
یک کنترلر با نام Course اضفه میکنیم . الگوی scaffolding به صورت زیر باشد.
MVC controller with read/write actions and views, using Entity Framework
کلاس Data Context خود را انتخاب کنید .
عملیات CRUD در کنترلر Course با ویوهای متناظر با استفاده از الگوهای scaffolding و متدهای Entity Framework ایجاد می شود .
یک ActionLink در نوار Navigation اضافه میکنیم.
ایجاد یک DropDownList در MVC
در ویو create یک DropDownlist با متغیرهای مقدار داده شده در دامنه Entity ایجاد میکنیم .
ویو Create به صورت زیر نمایش داده می شود.
اگر بخواهیم متغیرها مقدارشان را از کنترلر بگیرند به صورت زیر عمل میکنیم.
viewBag را در ویو فراهم میکنیم .
ایجاد یک مدل برای صفحه نمایش دانش آموزان و به روزرسانی دیتابیس با استفاده از Migration
یک مدل جدید برای دانش آموزان ایجاد میکنیم.
یک خاصیت جدید به DBContext اضافه میکنیم .
یک Migration جدید برای ایجاد جدول دانش آموزان در دیتابیس اضافه میکنیم .
از دستور Add-Migration برای ایجاد فایل مایگریشن استفاده می کنیم.
با استفاده از دستور Update-database در کنسول Pakage manager ، دیتابیس را به روزرسانی می کنیم.
یک کنترلر جدید برای Student با همان خاصیت readWrite ایجاد می کنیم.
عمل ایجاد در MVC
کنترلر Student ایجاد شده است .
یک ویو برای صفحه Create ایجاد میکنیم .
برنامه را اجرا کنید و به صفحه Student/Create بروید.
یک شی برای DNSContext ایجاد میکنیم.
یک متد HttpPost برای وارد کردن داده ها به دیتابیس ایجاد میکنیم .
عمل بارگذاری در MVC
یک ویو برای نمایش دادن لیست دانش آموزان ایجاد میکنیم.
صفحه index را برای نمایش تمام اطلاعات در لیست اصلاح می کنیم :
عمل ویرایش یا به روزرسانی در MVC
عمل Post در MVC برای به روزرسانی رکوردهای دانش آموزان
عمل جزئیات
عمل حذف در MVC
در پایان صفحه دانش آموزان با همه عملگرهای CRUD ایجاد شد.
- ASP.net MVC
- 7k بازدید
- 3 تشکر