PDA

View Full Version : سوال: DBFirst یا CodeFirst در پروژه های بزرگ؟



meysam_online2012
دوشنبه 19 تیر 1396, 11:38 صبح
سلام دوستان

در پروژه های بزرگ بهتره از کدوم این گزینه ها استفاده کنیم؟؟؟

اصلا درسته تو پروژهای بزرگ از ef استفاده کنیم؟

پروژه ای داریم نسبتا بزرگ با حدود 200 جدول و تعداد 10 میلیون رکورد که با کد فرست CFEF نوشتیم اما نسبت به برنامه نسخه قبلی خودمون که با SP )storeProcedure) , ado.net نوشته شده خیلییییی سرعت پایین تری داره .
سوالی که دارم اینجاست که اگ پروژه رو ب database first تبدیل کنیم و از اس پی ها استفاده کنیم سرعت بهتر میشه ؟؟ مزایای دی بی فرست نسبت به کد فرست چیه اصلن! الان برای تغییر توی دیتابیس توی مد کدفرست با ی مایگرشن ساده دیتابیس عوض میشه ، ایا تو دی بی فرست هم همینه؟ یا برای بوجود آوردن مدل از طریق دی بی فرست تمام جزییات دیتابیس از قبیل ایندکس ها ویو ها اس پی ها و ... همگی میاد داخل مدل؟؟ در کل بحث سرعت کار با نرم افزار و همچنین سرعت توسعه خیلی مهمه تو این موقعیت ، دوستان اگ تجربه خاصی تو این زمینه دارند راهنمایی کنند ممنونم

r@miiin
دوشنبه 19 تیر 1396, 14:55 عصر
سلام دوستان

در پروژه های بزرگ بهتره از کدوم این گزینه ها استفاده کنیم؟؟؟

اصلا درسته تو پروژهای بزرگ از ef استفاده کنیم؟

پروژه ای داریم نسبتا بزرگ با حدود 200 جدول و تعداد 10 میلیون رکورد که با کد فرست CFEF نوشتیم اما نسبت به برنامه نسخه قبلی خودمون که با SP )storeProcedure) , ado.net نوشته شده خیلییییی سرعت پایین تری داره .
سوالی که دارم اینجاست که اگ پروژه رو ب database first تبدیل کنیم و از اس پی ها استفاده کنیم سرعت بهتر میشه ؟؟ مزایای دی بی فرست نسبت به کد فرست چیه اصلن! الان برای تغییر توی دیتابیس توی مد کدفرست با ی مایگرشن ساده دیتابیس عوض میشه ، ایا تو دی بی فرست هم همینه؟ یا برای بوجود آوردن مدل از طریق دی بی فرست تمام جزییات دیتابیس از قبیل ایندکس ها ویو ها اس پی ها و ... همگی میاد داخل مدل؟؟ در کل بحث سرعت کار با نرم افزار و همچنین سرعت توسعه خیلی مهمه تو این موقعیت ، دوستان اگ تجربه خاصی تو این زمینه دارند راهنمایی کنند ممنونم

سلام
مزایای ef نسبت به databaes first:


- سرعت: برای کار با EF Code first نیازی نیست در ابتدای کار بانک اطلاعاتی خاصی وجود داشته باشد. کلا‌س‌های خود را طراحی و شروع به کدنویسی کنید.
- سادگی: در اینجا دیگر از فایل‌های EDMX خبری نیست و نیازی نیست مرتبا آن‌ها را به روز کرده یا نگهداری کرد. تمام کارها را با کدنویسی و کنترل بیشتری می‌توان انجام داد. به علاوه کنترل کاملی بر روی کد نهایی تهیه شده نیز وجود دارد و توسط ابزارهای تولید کد، ایجاد نمی‌شوند.
- طراحی بهتر بانک اطلاعاتی نهایی: اگر طرح دقیقی از مدل‌های برنامه داشته باشیم، می‌توان آن‌ها را به المان‌های کوچک و مشخصی، تقسیم و refactor کرد. همین مساله در نهایت مباحث database normalization را به نحوی مطلوب و با سرعت بیشتری میسر می‌کند.
- امکان استفاده مجدد از طراحی کلاس‌های انجام شده در سایر ORMهای دیگر. چون طراحی مدل‌های برنامه به بانک اطلاعاتی خاصی گره نمی‌خورند و همچنین الزاما هم قرار نیست جزئیات کاری EF در آن‌ها لحاظ شود، این کلاس‌ها در صورت نیاز در سایر پروژه‌ها نیز به سادگی قابل استفاده هستند.
- ردیابی ساده‌تر تغییرات: روش اصولی کار با پروژه‌های نرم افزاری همواره شامل استفاده از یک ابزار سورس کنترل مانند SVN، Git، مرکوریال و امثال آن است. به این ترتیب ردیابی تغییرات انجام شده به سادگی توسط این ابزارها میسر می‌شوند.
- ساده‌تر شدن طراحی‌های پیچیده‌تر: برای مثال پیاده سازی ارث بری،‌ ایجاد کلاس‌های خود ارجاع دهنده و امثال آن با کدنویسی ساده‌تر است.

meysam_online2012
یک شنبه 25 تیر 1396, 14:25 عصر
سلام
مزایای ef نسبت به databaes first:


- سرعت: برای کار با EF Code first نیازی نیست در ابتدای کار بانک اطلاعاتی خاصی وجود داشته باشد. کلا‌س‌های خود را طراحی و شروع به کدنویسی کنید.
- سادگی: در اینجا دیگر از فایل‌های EDMX خبری نیست و نیازی نیست مرتبا آن‌ها را به روز کرده یا نگهداری کرد. تمام کارها را با کدنویسی و کنترل بیشتری می‌توان انجام داد. به علاوه کنترل کاملی بر روی کد نهایی تهیه شده نیز وجود دارد و توسط ابزارهای تولید کد، ایجاد نمی‌شوند.
- طراحی بهتر بانک اطلاعاتی نهایی: اگر طرح دقیقی از مدل‌های برنامه داشته باشیم، می‌توان آن‌ها را به المان‌های کوچک و مشخصی، تقسیم و refactor کرد. همین مساله در نهایت مباحث database normalization را به نحوی مطلوب و با سرعت بیشتری میسر می‌کند.
- امکان استفاده مجدد از طراحی کلاس‌های انجام شده در سایر ORMهای دیگر. چون طراحی مدل‌های برنامه به بانک اطلاعاتی خاصی گره نمی‌خورند و همچنین الزاما هم قرار نیست جزئیات کاری EF در آن‌ها لحاظ شود، این کلاس‌ها در صورت نیاز در سایر پروژه‌ها نیز به سادگی قابل استفاده هستند.
- ردیابی ساده‌تر تغییرات: روش اصولی کار با پروژه‌های نرم افزاری همواره شامل استفاده از یک ابزار سورس کنترل مانند SVN، Git، مرکوریال و امثال آن است. به این ترتیب ردیابی تغییرات انجام شده به سادگی توسط این ابزارها میسر می‌شوند.
- ساده‌تر شدن طراحی‌های پیچیده‌تر: برای مثال پیاده سازی ارث بری،‌ ایجاد کلاس‌های خود ارجاع دهنده و امثال آن با کدنویسی ساده‌تر است.



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

تو کدوم روش میتونم اطلاعاتو سریعتر از دیتابیس واکشی کنم؟

r@miiin
یک شنبه 25 تیر 1396, 15:07 عصر
این دوتا لینکو ببین مقایسه کرده
https://stackoverflow.com/questions/15107992/performance-analyze-ado-net-and-entity-framework
https://blogs.msdn.microsoft.com/wriju/2009/01/05/choosing-between-linq-to-sql-and-entity-framework/

abdullah20
سه شنبه 27 تیر 1396, 19:15 عصر
سلام
در رابطه با استفاده کردن از EF در پروژه ها (چ کوچک چ بزرگ) که شکی درش نیست باید دیگه از EF استفاده کنید و کمتر کسی با ADO کار میکنه
در رابطه با استفاده از هر کدوم از مدل ها هم بهتره در این پروژه از کد فرست استفاده کنید چون تعداد جداول بالاست و اینطوری مدیریت خیلی بهتری خواهید داشت
در مدل کدفرست هم میتونید از sp استفاده کنید فرقی نداره

رامین مرادی
چهارشنبه 28 تیر 1396, 08:08 صبح
سلام
در رابطه با استفاده کردن از EF در پروژه ها (چ کوچک چ بزرگ) که شکی درش نیست باید دیگه از EF استفاده کنید و کمتر کسی با ADO کار میکنه
در رابطه با استفاده از هر کدوم از مدل ها هم بهتره در این پروژه از کد فرست استفاده کنید چون تعداد جداول بالاست و اینطوری مدیریت خیلی بهتری خواهید داشت
در مدل کدفرست هم میتونید از sp استفاده کنید فرقی نداره

ADO هم خوبه ها:چشمک:. من خودم از این روش استفاده میکنم. و صد البته دارم چند لایه مینویسم که در صورت نیاز به بهینه کردن دردسری برام نداره . تا حالا هم سرعت کارکردش خوب بوده و تا جایی که شنیدم نسبت به بقیه سرعت اجرای بالایی داره.

abdullah20
یک شنبه 01 مرداد 1396, 13:53 عصر
با سلام
بنده نگفتم ADO خوب نیست و مشکل داره
گفتم دیگه باید برید سمت EF