‫۹ سال و ۸ ماه قبل، چهارشنبه ۸ بهمن ۱۳۹۳، ساعت ۰۲:۳۹
این مطلب برای وب فرم‌ها تهیه شد. در ASP.NET MVC نیازی به آن نیست.
‫۹ سال و ۸ ماه قبل، سه‌شنبه ۷ بهمن ۱۳۹۳، ساعت ۱۶:۵۳
- لطفا خطاها را تصویری ارسال نکنید. متن موجود در تصاویر، قابلیت جستجو و پیگیری ندارند.
- متن آن واضح است و به عمد تنظیم شده‌است. عنوان کرده‌است که آدرس خاصی را یافت نمی‌کند و این آدرس‌ها قابلیت تزریق وابستگی ندارند. آدرس آن (arterySignalR/ping) مرتبط است به browser link که به این صورت می‌توانید آن‌را غیرفعال کنید:
public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("{*browserlink}", new { browserlink = @".*/arterySignalR/ping" });
    //...
}
و یا
<appSettings>
    <add key="vs:EnableBrowserLink" value="false" />
</appSettings>
‫۹ سال و ۸ ماه قبل، سه‌شنبه ۷ بهمن ۱۳۹۳، ساعت ۱۵:۰۷
- کش سطح دوم نباید برای کش کردن اطلاعات خصوصی استفاده شود؛ یا کلا اطلاعاتی که نیاز به سطح دسترسی دارند. هدف آن کش کردن اطلاعات عمومی و پر مصرف است. اطلاعات خاص یک کاربر نباید کش شوند.
- در تمام سیستم‌ها، برای مواردی که به کوئری‌های آن دسترسی ندارید تا متد Cacheable را به آن‌ها اضافه کنید، نتیجه‌ی کوئری‌ها را باید خودتان از طریق روش‌های متداول کش کنید (مانند کلاس CacheManager مطلب یاد شده).
‫۹ سال و ۸ ماه قبل، سه‌شنبه ۷ بهمن ۱۳۹۳، ساعت ۱۴:۱۴
Lazy loading با کش سازگاری ندارد؛ چون اتصال اشیاء موجود در کش از context قطع شده‌اند. در بار اول فراخوانی یک کوئری که قرار است کش شود، از context و دیتابیس استفاده می‌شود. اما در بارهای بعد دیگر به context و دیتابیس مراجعه نخواهد شد. تمام اطلاعات از کش سیستم بارگذاری می‌شوند و حتی یک کوئری اضافی نیز به بانک اطلاعاتی ارسال نخواهد شد. به همین جهت در این موارد باید از متد Include برای eager loading اشیایی که نیاز دارید استفاده کنید.
‫۹ سال و ۸ ماه قبل، سه‌شنبه ۷ بهمن ۱۳۹۳، ساعت ۱۳:۳۵
در انتهای سطر دوم مطلب، به این کتابخانه اشاره شده‌است. این مشکلات را دارد:
- چون از روش LINQ to Objects برای تهیه معادل رشته‌ای کوئری درخواستی استفاده می‌کند (دقیقا این روش: ^) قادر نیست Includeها و جوین‌های EF را پردازش کند و در این حالت برای تمام جوین‌ها یک هش مساوی را در سیستم خواهید داشت.
- چون قادر نیست cache dependencies را از کوئری به صورت خودکار استخراج کند، شما نیاز خواهید داشت تا پارامتر تگ‌های آن‌را به صورت دستی به ازای هر کوئری تنظیم کنید. این‌کار به صورت خودکار در پروژه‌ی جاری انجام می‌شود. cache dependencies به این معنا است که کوئری جاری به چه موجودیت‌هایی در سیستم وابستگی دارد. از آن برای به روز رسانی کش استفاده می‌شود. برای مثال اگر یک کوئری به سه موجودیت وابستگی دارد، با تغییر یکی از آن‌ها، باید کش غیرمعتبر شده و در درخواست بعدی مجددا ساخته شود.
‫۹ سال و ۸ ماه قبل، سه‌شنبه ۷ بهمن ۱۳۹۳، ساعت ۱۳:۲۵
رشته اتصالی هم در حین تولید کلید درنظر گرفته شده‌است. همچنین در صورت نیاز یک عبارت دلخواه را که به آن در اینجا saltKey گفته می‌شود، می‌توانید به رشته‌ی نهایی که از آن کلید تولید می‌شود، اضافه کنید. برای اینکار پارامتر EFCachePolicy را مقدار دهی کنید.
‫۹ سال و ۸ ماه قبل، سه‌شنبه ۷ بهمن ۱۳۹۳، ساعت ۰۰:۳۰
- یکبار متن را بخوانید. در قسمت «... دومین تغییر هم استفاده از متد base.Set می‌باشد ...» توضیح داده شده‌است.
- TEntity به معنای entity type است. کلاس‌های موجودیت‌هایی که از طریق DbSetها در معرض دید EF قرار می‌گیرند، اینجا قابل استفاده خواهند شد.
‫۹ سال و ۸ ماه قبل، دوشنبه ۶ بهمن ۱۳۹۳، ساعت ۱۳:۵۵
تزریق مستقیم یک concrete class در سازنده‌ی یک کلاس، تزریق وابستگی‌ها نام ندارد. اطلاعات بیشتر
برای نمونه نوشتن ( public UnitOfWork(DbContext context به معنای استفاده مستقیم از DbContext در سازنده‌ی کلاس است. در اینجا یک concrete class (یک کلاس معمولی دات نتی) در سازنده‌ی کلاس تزریق شده و عملیات معکوس سازی وابستگی‌ها رخ نداده‌است. این کلاس کاملا وابسته‌است به جزئیات کامل پیاده سازی کلاس DbContext
‫۹ سال و ۸ ماه قبل، یکشنبه ۲۸ دی ۱۳۹۳، ساعت ۲۲:۳۵
- از این فیلتر در حال حاضر در همین سایت جاری استفاده می‌شود. (بنابراین مشکلی ندارد)
- قسمت new RedirectResult آن‌را در سایت خودتان لاگ کنید، تا مشخص شود چندبار و به چه علتی اجرا می‌شود. همچنین بررسی کنید آیا جای دیگری در برنامه Redirect دیگری تنظیم شده یا خیر.