1 - با EF Code first بدون نیاز به دیتابیس میتونید یک برنامه رو کامل کنید. (منهای بحث آزمایش)
- کد نهایی تمیزتر. چون کلاسها را خودتان طراحی میکنید و توسط ابزارها به صورت خودکار تولید نمیشوند، کنترل بیشتر و نهایتا کیفیت بالاتری دارند.
- ساده است. درگیر نگهداری edmx modelها نخواهید بود. به روز رسانی بانک اطلاعاتی آن هم میتواند کاملا خودکار شود.
2 - دیتاست که کلا کارآیی بالایی نداره. اما ... نهایتا مطمئن هستم خروجی EF (به همراه تمام best practices لحاظ شده در آن) سرعت بالاتری از کلاسهای دست ساز sql helper موجود در وب دارد. برای مثال سطح اول کش آن خیلی از کوئریها را مجددا به بانک اطلاعاتی ارسال نمیکند. قابلیت اجرای به تعویق افتاده کوئریهای لینک امکان تهیه کوئریهای بسیار پیچیده را در یک رفت و برگشت مهیا میکند. کاری که با sql helperهای معمولی نیازی به چندبار رفت و برگشت دارد. قابلیتهای lazy loading آن میتواند مصرف حافظه و بار سرور را درصورت استفاده صحیح کاهش دهد. کوئریهای آن strongly typed و پارامتری هستند (تحت نظر کامپایلر + امنیت + سرعت (کوئریهای پارامتری مانند رویههای ذخیره شده کش میشوند)). به صورت پیش فرض از تراکنشها استفاده میکند و ... خیلی از الگوهای مفید دیگر که چندین سال باید وقت صرف کنید تا نمونه آنها را پیاده سازی کنید. یعنی کار اصولی با بانک اطلاعاتی صرفا یک select ساده نیست که بر اساس آن کارآیی و یا بهتر بودن روشی را مشخص کنید.
- کد نهایی تمیزتر. چون کلاسها را خودتان طراحی میکنید و توسط ابزارها به صورت خودکار تولید نمیشوند، کنترل بیشتر و نهایتا کیفیت بالاتری دارند.
- ساده است. درگیر نگهداری edmx modelها نخواهید بود. به روز رسانی بانک اطلاعاتی آن هم میتواند کاملا خودکار شود.
2 - دیتاست که کلا کارآیی بالایی نداره. اما ... نهایتا مطمئن هستم خروجی EF (به همراه تمام best practices لحاظ شده در آن) سرعت بالاتری از کلاسهای دست ساز sql helper موجود در وب دارد. برای مثال سطح اول کش آن خیلی از کوئریها را مجددا به بانک اطلاعاتی ارسال نمیکند. قابلیت اجرای به تعویق افتاده کوئریهای لینک امکان تهیه کوئریهای بسیار پیچیده را در یک رفت و برگشت مهیا میکند. کاری که با sql helperهای معمولی نیازی به چندبار رفت و برگشت دارد. قابلیتهای lazy loading آن میتواند مصرف حافظه و بار سرور را درصورت استفاده صحیح کاهش دهد. کوئریهای آن strongly typed و پارامتری هستند (تحت نظر کامپایلر + امنیت + سرعت (کوئریهای پارامتری مانند رویههای ذخیره شده کش میشوند)). به صورت پیش فرض از تراکنشها استفاده میکند و ... خیلی از الگوهای مفید دیگر که چندین سال باید وقت صرف کنید تا نمونه آنها را پیاده سازی کنید. یعنی کار اصولی با بانک اطلاعاتی صرفا یک select ساده نیست که بر اساس آن کارآیی و یا بهتر بودن روشی را مشخص کنید.