PDA

View Full Version : تفاوت این دو روش در ساختن کلاس های Model چیه؟



merlin425
شنبه 29 تیر 1392, 17:03 عصر
دوستان من خودم وقتی می خوام کلاس های Model رو بسازم از EF استفاده میکنم و از روی بانک موجود واسم کلاس هام رو میسازه ولی برخوردم بعضی ها این کلاسها رو خودشون می نویسن یعنی واسه هر جدول و موجودیتشون یه کلاس می نویسن که فیلد های اون جدول به شکل Property در اومده و بعد هم یه کلاس کلی دارن که عملگر روی بانکه و از DbContext مشتق شده دقیقآ مثل خود EF اگه مثلآ این رو بگیم که با این روش میشه Property های کلاس رو بهش Attribute داد خوب در مقابلش این جواب هم وجود داره که میشه کلاس هایی که EF ساخته رو تغییر داد مشکل کلاس های EF چیه که این روش رو استفاده میکنن

grobech
شنبه 29 تیر 1392, 18:52 عصر
سلام
من قبلا با استفاده از Entity کلاسهای پروژه خودم را درست میکردم به شخصه مشکلی که با این روش داشتم نگهداری Model ایجاد شده بود در زمان تغییر نوع یا نام و حتی افزودن یا حذف ستون ها بود ولی اگر شما خودتون این کلاسها را ایجاد کنید مدیریت نیز بهتر خواهد شد.

merlin425
شنبه 29 تیر 1392, 20:07 عصر
من دقیق مشکلی که شما با هاش برخورد کردید رو متوجه نشدم ولی اگه منظورتون اینکه مثلآ تو Database تغییری بدین توی مدل اعمال نمیشه کرد خوب میشه رفت داخل خود مدل و Update From Database رو میزنه همه تغییرات اعمال میشه یکم منو روشن میکنین دقیق مشکل چی بود

parvizwpf
یک شنبه 30 تیر 1392, 14:38 عصر
الان میخواید بفهمید که روش database first با code first چه فرقی داره؟
منظور شما از مشکل کلاسهای efچیه؟
در روش شما db first خود سیستم به تشخیص روابط جداول گشته و به اونها رو مینویسه حالا وقی تغییری باشه از آپدیتی که گفتد استفاده میشه حالا اگه همون اتریبوتها داده شده باشن همش درو میشه و پاک میشه و overwrite میشه. امااگه بیاید روش code first برید، الرقم اینکه همه چیز تو مشت شماست، میتونید از قابلیت migration برای اعمال تغییرات در متن پروژه استفاده کنید که هیچ ضرری نخواهد داشت.

merlin425
یک شنبه 30 تیر 1392, 22:06 عصر
لان میخواید بفهمید که روش database first با code first چه فرقی داره؟
بله که تو قسمت پایین جوابشو دادین

تشکر من کاملآ جواب خودمو گرفتم فقط اگه بگید این migration چیه که خیلی لطف میکنین البته شاید من بشناسمش ولی اصطلاح درستش رو نمیدونم

ali_autumnal
یک شنبه 30 تیر 1392, 22:11 عصر
اینکه درک پروژه واستون راحت تر میشه. اصلا دیگه نیازی ندارید database رو open کنید تا جدول های موجود رو نگاه کنید. دید شما بقدری نسبت به پروژه باز میشه که احساس نمی کنید دارید با دیتابیس کار می کنید یا اصلا دیتابیس دارید یا نه!!!
اعمال تغییرات با توجه به migration بسیار ساده است. هر لحظه تغییرات رو می تونید updaete کنید.

ali_autumnal
یک شنبه 30 تیر 1392, 22:14 عصر
برای درک بهتر توصیه ی کنم مقاله فوق رو بخونید
http://www.dotnettips.info/post/834/ef-code-first-4

بهزاد علی محمدزاده
یک شنبه 30 تیر 1392, 22:32 عصر
اینکه درک پروژه واستون راحت تر میشه. اصلا دیگه نیازی ندارید database رو open کنید تا جدول های موجود رو نگاه کنید. دید شما بقدری نسبت به پروژه باز میشه که احساس نمی کنید دارید با دیتابیس کار می کنید یا اصلا دیتابیس دارید یا نه!!!

سلام . خیلی هم به نظرم جالب نیست . گرچه باید تغییرات رو بپذیریم و باهاش کنار بیایم , رفتم فریم ورک Laravel در PHP رو بررسی کردم , اون هم تقریبا داره از این الگو استفاده (http://four.laravel.com/docs/migrations) و پشتیبانی می کنه . اما به نظرم خیلی از این تغییراتی که مجبور هستیم باهاش کنار بیایم و یادش بگیریم , الزامی نیست .

همیشه گفتن کار دیتابیس رو در سطح دیتابیس انجام بدین , قیود ها رو هم در دیتابیس و هم در لایه App تعریف کنید . حتی بعضی ها روش کلاس دیاگرام ( کلا UML ) رو برای تحلیل و مدلسازی دیتابیس کافی نمی دونند و روش ER رو می پسندند . میگن کلاس دیاگرام امکانات کمتری برای این کار داره .

جدای از ORM های دیگه که میان و میرن , میگه در EF به سه روش می تونید کار کنید . بعد از مدتی می شنویم که روش Model First رو می خواد خیلی دنبال نکنه . Database First رو به همچنین . برید Code First یادبگیرید . یه مدت دیگه هم این و هم کنار میذازن و ما باید بریم سراغ روشهای دیگه . و معلوم نیست آیا فرصتی هم برای خلاقیت و تولید باقی می مونه ؟

parvizwpf
چهارشنبه 02 مرداد 1392, 01:56 صبح
پس مایکروسافت بیکاره orm داده بیرون؟
الان شما تا حالا باef کار کردید؟
آیا کار شما سطح برنامه راحت تر شده؟ آیا قابلیتهای سمت sql رو از دست دادید؟
ضمنا مایکروسافت کسی رو مجبور به استفاده نکرده. شما ببینید لینک از لحاظ مایکروسافت منسوخ اعلام شده ولی بیشتریا تو ایران حداقل دارن به فطرات استفاده میکنن.

بهزاد علی محمدزاده
چهارشنبه 02 مرداد 1392, 05:06 صبح
خب دیگه بالاخره اینها ابزار های رایج ما هستند و ما هم کاربران اینها و استفاده ازشون می تونه بازخوردهایی رو داشته باشه . من هم نظرم و گفتم .


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

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

اما شما قبول ندارید که هر کدام از این امکاناتی که میان و بعد منسوخ میشن و جدیدش رو باید یا بهتره یا بازار بهت میگه که باید یادبگیری برای برنامه نویس چقدر هزینه بر هست ؟

parvizwpf
پنج شنبه 03 مرداد 1392, 14:39 عصر
دوست عزیز سلام. من عصبانی نشدم. تحلیل جالبی نداشتید. من یه خورده یه جانبه حرف زدم. اگه مایکروسفت بخواد تو بازار کارش پا به پا با رقیباش جلو بره نیازمند چنین تغییراتی هست امروز گفتن یه چیز جدید داره با سی شارپ 6 میاد. باید این طور رفتار کنه. اگه نکنه دهنش سرویسه باید روزی سراغ orm میرفت. اون دیگه نگاه نمیکنه توی برنامه نویس کی هستی و چه میکنی. در ضمن شما مگه چقدر تو برنامه هاتون تغییر پذیری دارید و اینکار رو به کمال وتمام انجام میدید که از این قضیه دلخور هستید؟ یعنی ماها زیاد به تغییرات حوزه برنامه نویسی توجهی نداریم هنوز داریم تو پروژه لینک و ای دی اوی سابق مینویسیم.