نوشته شده توسط
meysam_online2012
سلام دوستان
در پروژه های بزرگ بهتره از کدوم این گزینه ها استفاده کنیم؟؟؟
اصلا درسته تو پروژهای بزرگ از ef استفاده کنیم؟
پروژه ای داریم نسبتا بزرگ با حدود 200 جدول و تعداد 10 میلیون رکورد که با کد فرست CFEF نوشتیم اما نسبت به برنامه نسخه قبلی خودمون که با SP )storeProcedure) , ado.net نوشته شده خیلییییی سرعت پایین تری داره .
سوالی که دارم اینجاست که اگ پروژه رو ب database first تبدیل کنیم و از اس پی ها استفاده کنیم سرعت بهتر میشه ؟؟ مزایای دی بی فرست نسبت به کد فرست چیه اصلن! الان برای تغییر توی دیتابیس توی مد کدفرست با ی مایگرشن ساده دیتابیس عوض میشه ، ایا تو دی بی فرست هم همینه؟ یا برای بوجود آوردن مدل از طریق دی بی فرست تمام جزییات دیتابیس از قبیل ایندکس ها ویو ها اس پی ها و ... همگی میاد داخل مدل؟؟ در کل بحث سرعت کار با نرم افزار و همچنین سرعت توسعه خیلی مهمه تو این موقعیت ، دوستان اگ تجربه خاصی تو این زمینه دارند راهنمایی کنند ممنونم
سلام
مزایای ef نسبت به databaes first:
- سرعت: برای کار با EF Code first نیازی نیست در ابتدای کار بانک اطلاعاتی خاصی وجود داشته باشد. کلاسهای خود را طراحی و شروع به کدنویسی کنید.
- سادگی: در اینجا دیگر از فایلهای EDMX خبری نیست و نیازی نیست مرتبا آنها را به روز کرده یا نگهداری کرد. تمام کارها را با کدنویسی و کنترل بیشتری میتوان انجام داد. به علاوه کنترل کاملی بر روی کد نهایی تهیه شده نیز وجود دارد و توسط ابزارهای تولید کد، ایجاد نمیشوند.
- طراحی بهتر بانک اطلاعاتی نهایی: اگر طرح دقیقی از مدلهای برنامه داشته باشیم، میتوان آنها را به المانهای کوچک و مشخصی، تقسیم و refactor کرد. همین مساله در نهایت مباحث database normalization را به نحوی مطلوب و با سرعت بیشتری میسر میکند.
- امکان استفاده مجدد از طراحی کلاسهای انجام شده در سایر ORMهای دیگر. چون طراحی مدلهای برنامه به بانک اطلاعاتی خاصی گره نمیخورند و همچنین الزاما هم قرار نیست جزئیات کاری EF در آنها لحاظ شود، این کلاسها در صورت نیاز در سایر پروژهها نیز به سادگی قابل استفاده هستند.
- ردیابی سادهتر تغییرات: روش اصولی کار با پروژههای نرم افزاری همواره شامل استفاده از یک ابزار سورس کنترل مانند SVN، Git، مرکوریال و امثال آن است. به این ترتیب ردیابی تغییرات انجام شده به سادگی توسط این ابزارها میسر میشوند.
- سادهتر شدن طراحیهای پیچیدهتر: برای مثال پیاده سازی ارث بری، ایجاد کلاسهای خود ارجاع دهنده و امثال آن با کدنویسی سادهتر است.