PDA

View Full Version : سوال: Code First یا Database First ؟



jaykob
پنج شنبه 27 فروردین 1394, 11:06 صبح
سلام دوستان


من از اولی که با mvc کار می کنم دارم Code First کار می کنم اما الان مدتی است که یک پروژه بزرگ کار می کنم و سعی کردم از طرفی SQL رو هم خوب یاد بگیرم فکر می کنم تنظیمات درخواستی من با Fluent API خیلی سخته و زمان بر هست و از طرفی روابط که پیچیده می شه و بحث کلید خارجی ها و ... مورد دیگه توی sql خیلی کمتر کار می بره ...

حالا سوالی دارم اینکه که واقعا کدوم گزینه بهتره ؟ مزیت های هر کدوم و معایب رو با توجه به تجربه بفرمایید و هر نظری در رابطه با مقایسه این دو گزینه می شه گفت ...

تشکر

r4hgozar
پنج شنبه 27 فروردین 1394, 11:13 صبح
سلام.
راستش من db first کار می کردم در سی شارپ و برنامه های ویندوزی رو با اون می نوشتم.
اما وقتی خواستم mvc کار کنم همه بهم گفتن code first کار کن( مطالب مایکروسافت و اساتیدی مثل مهرداد نادری).
یه مقدار ارتباط دهی باهاش سخت بود اولا مخصوصا many to many اما اگه یه پروژه رو باهاش بنویسین دیگه میشه گقت همه چی رو دارین و دیگه نیاز نیست بنویسین.
مزیتش که من خودم خیلی لذت می برم ازش migration کردن بسیار راحتشه. دیتابیس رو به راحتی میشه تغییر داد و با یک بار build کردن خودش تغییر میکنه و نیاز نیست کار دیگه ای بکنین.

دوستان تجربه بیشتری دارن و راهنمایی می کنند حتما.
موفق باشید

alireza_s_84
پنج شنبه 27 فروردین 1394, 13:11 عصر
سلام دوستان


من از اولی که با mvc کار می کنم دارم Code First کار می کنم اما الان مدتی است که یک پروژه بزرگ کار می کنم و سعی کردم از طرفی SQL رو هم خوب یاد بگیرم فکر می کنم تنظیمات درخواستی من با Fluent API خیلی سخته و زمان بر هست و از طرفی روابط که پیچیده می شه و بحث کلید خارجی ها و ... مورد دیگه توی sql خیلی کمتر کار می بره ...

حالا سوالی دارم اینکه که واقعا کدوم گزینه بهتره ؟ مزیت های هر کدوم و معایب رو با توجه به تجربه بفرمایید و هر نظری در رابطه با مقایسه این دو گزینه می شه گفت ...

تشکر
استفاده از هر کدوم از این روشها بستگی مستقیم به توانایی ، دانش و سرعت عمل شما داره.
من هم در جاهای زیادی خوندم که تاکید میکردن از Code First استفاده کنم ولی وقتی یک شبکه اجتماعی نوشتم و با این روش جلو رفتم نه فقط در وقتم صرفه جویی نشد بلکه مجبور شدم برگردم و از Ado.Net استفاده کنم.
من در حال حاضر ابتدا دیتابیس رو طراحی میکنم و بعد یک مدل با استفاده از EF میسازم و فقط از کلاس هاش استفاده میکنم. بخصوص اینکه تاکیدی شدیدی روی استفاده از رویه های ذخیره شده دارم و چون استفاده از EF با SP ها انعطاف پذیری کمتری داری ترجیح میدم از ADO استفاده کنم.
ولی در عمل فرقی بین Code First و DatabaseFirst وجود نداره تقریبا قوانین طراحی یکی هست ولی خب چون CodeFirst به دنبال حذف وابستگی به سینتکس های T-Sql هست باعث میشه کمی فقط مقدار کمی طرز کار متفاوت باشه.
اگر کسی به دیتابیسی که باهاش کار میکنه مسلط باشه واقعا تفاوتی نداره که از کدوم استفاده بشه. چه شما مدل روی توی EF طراحی کنی و کلاس ها رو بسازی چه بری توی دیتابیس جداول رو بسازی.