CodeFirst یا DatabaseFirst مسئله اینست

CodeFirst یا DatabaseFirst مسئله اینست

برای بسیاری از افراد که میخواهند وارد عرصه معماری MVC شوند همیشه سوال مطرح بوده که با کدام روش باید شروع کرد و ادامه داد.

بطور کلی سه رویکرد برای توسعه دهندگان Entityframework وجود دارد

·  Database First

·  Code First

·  Model First 

که دو مورد اول از محبوبیت بیشتری برخوردار هستند. ما هم در این مقاله به ویژگی های این دومورد میپردازیم.

Code First

در رویکرد Code First  ابتدا موجودیت ها بصورت کلاس به همراه Properties های ان ها تعریف میشوند. Entity Framework هم بر اساس کلاس هایی که تعریف شده است دیتابیس و جداول را می سازد به عبارت دیگر دیتابیس از کد تولید میشود. با اجرای دات نت دیتابیس نیز ساخته میشود

مزایای Code First

  • شما می تواند جداول و دیتابیس را کاملا منطبق بر لایه منطقی برنامه ایجاد کنید
  • شما مشخص میکنید که داده ها بصورت eager Load بازیابی شوند یا نه بصورت serialized  یا Lazy Load
  • مدیریت کامل بر نسخه ها دیتابیس
  • مناسب برای برنامه های متوسط و کوچک

معایب Code First

  • شما مجبورید تمامی ارتباطات دیتابیس را خودتان بنویسید
  • برای Map کردن StoreProcedure  ها مجبورید از توابع Fluent API  استفاده کنید و StoreProcedure ها را داخل کد بیاورید
  • با هر تغییر کوچکی جداول دیتابیس شما باید کلاس ها را تغییر داده سپس دستور update-database را در package manager console اجرا کنید
  • برای برنامه های کاربردی پیچیده  ترجیح داده نمیشود

 

رویکرد Database First

در این روش دیتا مدل شما بر اساس دیتابیس ایجاد میشود

مزایای DataBase First

  • بسادگی Data Model شما ساخته میشود
  • کاربری گرافیکی از مدل در دسترس شما خواهد بود
  • Map کردن ها، ارتباطات بین جداول، کلید های خارجی و... به آسانی ایجاد میشوند و نیازی به کدنویسی برای آنها ندارید
  • برای برنامه های کاربردی پیچیده و بزرگ  پیشنهاد میشود

معایب DataBase First

  • تولید کدهای خودکار زیادی برای ایجاد فایل Edmx
  • زمانی که تغییری در دیتابیس میدهد مجدد باید مدل شما تولید و یا آپدیت شود

بطور کلی ماهیت برنامه ای که توسعه میدهید، آینده ای که پیش روی برنامه ترسیم کرده اید و کمی سلیقه شخصی  در انتخاب رویکرد شما برای استفاده از یکی از روش ها فوق موثر است

مرتضی جنگجو

برنامه نویس fullstack با بیش از 14 سال سابقه در توسعه و پیاده سازی نرم افزارهای تحت وب با تکنولوژی Net.

شبکه های اجتماعی نویسنده

دیدگاه کاربران