CodeFirst یا DBFirst کدام را انتخاب کنیم؟
- 1399/10/3
- 4015
- برنامه نویسی
معرفی دو تکنولوژی CodeFirst و DBFirst
در این مقاله سعی داریم تا مفهوم هردو تکنولوژی را به صورت کامل تشریح کنیم تا درک بهتری از نحوه ی پیاده سازی پایگاه داده داشته باشیم سپس به بررسی معایب و مزایای هردو روش میپردازیم .ابتدا نیار هست تا مفهوم ADO.NET Entity Framework را بدانیم سپس به روش های موجود آن بپردازیم :
ای دی او دات نت (ADO.NET) یک پلت فرم برای ارتباط برنامه های کاربردی با دیتا بیس میباشد که شرکت مایکروسافت در نسخه های مختلف ارائه نموده است و EF یک Framework برای ماکروسافت است، که به گونه ای طراحی شده است تا توسعه دهندگان را قادر سازد در مقابل مدل های مرسوم مفهومی(conceptual)، از یک مدل جدید با امکان دسترسی و برنامه نویسی مستقیم بر اساس ساختار یک دیتابیس رابطه ای استفاده نمایند.که روش های پیاده سازی آن به دو صورت CodeFirst یا DBFirst می باشد.
هر دو روش رویکردهای مهم و مناسبی برای توسعه دهندگان Entity Framework می باشند ولی تفاوت های عمده ای در نحوه ی پیاده سازی با یکدیگر دارندکه در ادامه به طور کامل این تفاوت هارا شرح خواهیم داد :
بررسی روش DBFirst :
در روش Database First یا Reverse Engineering شما اول باید دیتابیس خود را در DBMS بسازید و برای دیتابیس خود جداول تعریف کنید و همه ی کارهای Model های خودتون رو در DBMS مورد نظر انجام بدید و سپس Scaffold کنید
در این روش با استفاده از DBMS هایی همچون MSSQL پایگاه داده در مرحله اول توسط DB Administrator طراحی میشود و مواردی همچون ساخت جداول ، ایجاد Relationship بین جداول ، تعریف Store Procedure ، تعریف Function یا ایجاد View در این قسمت تولید میشوند سپس با استفاده از تکنولوژی ADO.NET Entity Framework پایگاه داده به پروژه ی مدنظر ما انتقال پیدا کرده و کلاس های مورد نظر ما ساخته میشوند.
در این روش جهت ایجاد تغییر در مدل پایگاه داده نیازی به کدنویسی نیست و به راحتی میتوان با رابط گرافیکی موجود در DBMS ها تغیرات یا ویرایش را انجام داد سپس به سراغ پروژه مورد نظر در محیط ویژوال استادیو رفته و گزینه Update DB را انتخاب میکنیم.
مزایای استفاده از روش DBFirst :
- پایگاه داده شما براحتی ساخته شده و به آسانی ویرایش میشود
- دایاگرام گرافیکی از مدل پایگاه داده میتوان ایجاد کرد و براحتی تغییرات درون آن انجام میگیرد
- جهت ایجاد ارتباط بین جداول ، انتخاب کلید اصلی ، نوشتن Store Procedure نیازی به کدنویسی نمی باشد
- قبل از شروع کار پایگاه داده شما قابل دسترس می باشد
معایب DataBase First
- فایل Edmx اسکریپت و کدهای متنوعی به صورت اتوماتیک تولید میشوند که موجب افزایش حجم پروژه می شوند
- در این مدل وابستگی شدیدی به سینتکس های T-Sql هست و حتما باید استفاده شده باشن
بررسی روش CodeFirst :
این روش بسیار محبوب بوده و اکثر برنامه نویسان حرفه ای از آن استفاده می کنند.زیرا در این روش نیازی نیست که یک برنامه نویس ابتدا پایگاه داده را به صورت بصری (XML) طراحی کند بلکه با چند خط کد منظور خود را می رساند. از طرفی شما با استفاده از آن می توانید به صورت کامل به کدهای پایگاه داده خود مسلط باشید و در صورتیکه تصمیم به تغییر بخشی بگیرید سریعا آن را انجام دهید.
بنابراین اگر منطق و برنامه نویسی قوی ای دارید بهترین روش Code first می باشد. اگر بخواهم در یک جمله بگویم: روش Code first طراحی پایگاه داده با استفاده از کد و برنامه نویسی است.
ای دی او دات نت انتیتی فریم ورک کد فرست (ADO.NET Entity FrameWork CodeFirst) به عنوان قوی ترین او آر ام (ORM) حال حاضر جهان این امکان را برای شما فراهم میکند که تنها با کد نویسی آنچه میخواهید پایگاه داده خود را بصورت خودکار و هوشمند ایجاد کنید.
از این پلت فرم میتوانید در همه برنامه های خود استفاده کنید مثل ویندوز فرم اپلیکیشن , ای اس پی دات نت وب فرم , ای اس پی دات نت ام وی سی , دبلیو پی اف و ... اما به خاطر داشته باشید این نسخه از ADO.NET با پلت فرم های جدید تر مثل ام وی سی (MVC) و دبلیو پی اف (WPF) بطور فوق العاده کامل و کاربردی تر از پلت فرم های قدیمی تر , سازگاری دارد بطوریکه می توان در این پلت فرم ها با استفاده از این نسخه بحث یونیت تستینگ (Unit Testing) را نیز بطور کامل و از ابتدای پروژه پیاده سازی نمود.
معایب Code First
- در این مدل نیاز هست تا تمامی ارتباطات با دیتابیس کامل و دقیق کدنویسی بشوند
- در این مدل برای ایجاد تغییر در پایگاه داده باید کلاس ها برنامه نویسی شده دستور update-database را در package manager console اجرا کنید
- در این روش StoreProcedure ها به صورت مستقل نوشته نمیشوند و مجبورید از توابع Fluent API استفاده کنید و آنها را داخل کد بیاورید
با توضیحاتی که ارائه شد میتوان نتیجه گرفت که اغلب توسعه دهندگان از رویکرد CodeFirst به دلیل تسلط بیشتر به پایگاه داده استفاده میکنند ولی افرادی هم هستند که روش DBFirst را به دلیل سادگی و رابط کاربری عالی جهت پیاده سازی مدل خود ترجیح میدهند. هر دو روش هم از لحاظ علمی و هم از لحاظ فنی مورد تائید توسعه دهندگان می باشد و بیشتر یک بحث سلیقه ای می باشد و برتری زیادی نسبت به همدیگر ندارند.