PDA

View Full Version : مزیتهای code first نسبت به database first چیست؟



EnKamran
سه شنبه 11 بهمن 1390, 18:06 عصر
سلام دوستان، من می خواستم بدونم مزیتهای استفاده از Code First به DataBaseFirst چیه ؟
وقتی من می تونم به راحتی دیتابیسم رو درست کنم چرا بیام کدهاش رو بنویسم ؟
تازه اومدیم و بعد از این که وب سایت آپلود شد و در حال کار بود نیاز داشتم یک فیلد به یک جدول اضافه کنم خوب توی Code First همونطور که می دونید دیتابیس و همه اطلاعاتش پاک میشه و دوباره ساخته میشه اما توی DataBase First فیلد رو به جدول اضافه می کنم و مدل رو آپدیت می کنم.

aserfg
سه شنبه 11 بهمن 1390, 18:38 عصر
هر کدام از اینها مزایایی دارند و به خاطر وجود سلایق گوناگون در بین برنامه نویسان این شیوه ها ابداع شدند نه به خاطر برتری یکی بر دیگری . به عنوان مثال دوستانی که علاقه مند به کدنویسی هستند تا درگیر شدند با بانک اطلاعاتی به عبارتی hardcore programmers روش codefirst را انتخاب خواهند کرد و احتمالا دوستانی مثل شما روش دوم را و اگر شما جز این دسته اید : you don't like writing code or SQL مسلما روش Model first را انتخاب می کنید .

code first
کنترل کامل در کدنویسی (کدها به صورت اتومات تولید نمی شوند تا تغییر هر کدام مشکل باشد دقت کنید تغییرات همیشه از جانب بانک اطلاعاتی تحمیل نمی شوند )
شما با چالشهای بانک اطلاعاتی درگیر نمی شوید . بانک اطلاعاتی یک منبع ذخیره اطلاعات بدون منطق برنامه نویسی است . و در حالت فوق شما نیازی نیست از مسائل خسته کننده نرمال سازی بانک اطلاعاتی داشته باشید . (همیشه برنامه های ما برای کارهای روزمره نخواهند بود لحظه ای را در نظر بگیرید که برنامه شما لازم است با استانداردترین شکل ممکن نوشته شود . )
و مهمترین مساله : تغییرات دستی در بانک اطلاعاتی نیازی نخواهد بود زیرا این کدها هستند که بانک اطلاعاتی را کنترل می کنند .
و در قیاس با حالت Model first نیازی نیست درگیر مپ کردن موجودیتها در فایل edmx بشیم .

Database first
در حالتی که بانک از قبل وجود دارد .
در این حالت مدل کاری ما را بانک اطلاعاتی مدیریت می کند و با هر تغییر تنها کافی است مدل را بروز رسانی کنیم .

EnKamran
سه شنبه 11 بهمن 1390, 23:53 عصر
خوب مشکل منم همینه من میگم ببینید شما می دونید که توی Code First وقتی یک تغییری توی کدها بدید دیتابیس پاک و دوباره ساخته میشه این یک بدی خیلی بزرگه ولی خوب یک خوبیی که خیلی خوبه DataAnnotaions هست.
اگه این جریان پاک شدن اطلاعات رو بشه یه جوری حل کرد Code First هیچ مشکلی نداره دیگه

gama_slv
دوشنبه 15 آبان 1391, 11:57 صبح
در هر کدوم از این روش ها باید مواردی از نوع باز تولید بشه
در data first باید model و ویو ها رو دوباره بسازید و در code first هم که هم viwe و کنترل هار و دوباره باید بسازی
اما مشکل اینکه اطلاعات بانک حذف میشه رو میتونید راحت حل کنید با Red Gate و ابزارهایی که داره میشه مشکل رو حل کرد یا با نسخه بندی کردن پروژه این مشکل حل میشه.
خیلی مهم!
در آخر و یکی از نکات خیلی مهم قبل از انتخاب اینکه از کدام روش استفاده کرد این که در code first همیشه کلید اصلی یا همان primary key جدول دارای خاصیت Identity هست و نمیتوان در Code first کلید اصلی را Identity قرار نداد و اگر از خود sql یا دیگر ابزارهای بانک اطلاعاتی اقدام به تغییر این گزینه ا بشود ارتباط با بانک قطع شده و دیگر نمیتوانید از این دیتا بیس استفاده کنید برای حل این مشکل باید در طراحی Data Base خود دقت کنید
و اگر از MVC و از Scaffolding خود net. برای ساخت control ها و View ها استفاده میکنید در هیچ کدام از این دو روش کلید اصلی جداول نمایش داده نمیشود و این به خاطر این است که Identity را خود Scaffolding نادیده میگیرد و مقدار دهی آن بصورت خودکار انجام میگیرد.

sia_2007
دوشنبه 15 آبان 1391, 12:04 عصر
توصیه می کنم این پست (http://dnpars.ir/blog/?p=53) رو مطالعه کنید، به زبان شیرین پارسی ( لطفا لینک مربوط به سایت آقای نصیری رو هم که داخلش هست رو مطالعه کنید )، در پایان از غیر از Code First استفاده نخواهید کرد، مطمئن باشید
حتما این چند تا تاپیک رو مطالعه کنید
مشکلاتی که فرموده اید، همگی به راحتی و با 2 الی 3 خط کد قابل حل شدن هستند
موفق و پایدار باشید

Error_abadan
پنج شنبه 12 مرداد 1396, 11:24 صبح
سلام دوست من

این لینکی که گذاشتید متأسفانه کار نمیکنه، میدونم که قدیمی شده ولی این مطلب خیلی واسه من مهم هست، لطفاً اگر لینک دیگه ای که شبیه به همین مطالب رو بتونه به من و باقی دوستان برسونه بتونید معرفی کنید ممنون میشم.

با تشکرفراوان

aliramazani
جمعه 07 مهر 1396, 12:11 عصر
یه سوال
در حالت code first به نوع دیتابیس و ورژنش وابستگی وجود داره؟
یعنی سیستم هدف باید نرم افزاری مثل sql server را نصب کنه؟