‫۱۱ سال و ۸ ماه قبل، دوشنبه ۲۳ بهمن ۱۳۹۱، ساعت ۱۶:۲۰
- «مثال» این قسمت یک برنامه ویندوزی کنسول است. در جائیکه وب سرور در دسترس نباشه به صورت خودکار به Memory Cache سوئیچ می‌کنه. (البته فرض بر این است که یکبار اجراش کردید یا حداقل خروجی درج شده رو بررسی کردید)
- زمانیکه از لایه سرویس استفاده می‌کنید، استفاده کننده نهایی فقط با یک سری اینترفیس کار می‌کنه نه الزاما پیاده سازی خاص شما. به عبارتی می‌شود mocking رو به سادگی اعمال کرد روی این لایه.
- هدف از این سایت ارائه ایده هست، نه راه حل‌های جهان شمول بی عیب و نقص قابل استفاده در تمام مسایل و مشکلات بشری. همینقدر که ایده‌ای مطرح شده، نکته‌ی جدیدی عنوان شده و کمی تونسته ذهن شما رو درگیر کنه، رسالت خودش رو انجام داده.
- اکثر کارهای این سایت سورس باز هستند. یعنی اگر به این نتیجه رسیدید که می‌تونید کیفیتش رو بهبود ببخشید، لطفا حتما اینکار رو انجام بدید و یک وصله ارائه کنید. البته بعد از اینکار هم حتما ذکر کنید که از چه cache provider جدیدی قرار هست خصوصا در برنامه‌های وب قابل اجرا در IIS که کاربرد اصلی این بحث است، استفاده بشه.
‫۱۱ سال و ۸ ماه قبل، دوشنبه ۲۳ بهمن ۱۳۹۱، ساعت ۰۱:۱۴
با این تنظیمات
    public class OrderMap : EntityTypeConfiguration<Order>
    {
        public OrderMap()
        {
            this.HasOptional(x => x.Quotation)
                .WithOptionalPrincipal()
                .Map(x => x.MapKey("OrderId"));
        }
    }

    public class QuotationMap : EntityTypeConfiguration<Quotation>
    {
        public QuotationMap()
        {
            this.HasOptional(x => x.Order)
                .WithOptionalPrincipal()
                .Map(x => x.MapKey("QuotationId"));
        }
    }
با این خروجی

‫۱۱ سال و ۸ ماه قبل، دوشنبه ۲۳ بهمن ۱۳۹۱، ساعت ۰۰:۳۱
هر کلاس کنترلر از کلاس پایه‌ای به نام Controller مشتق می‌شود. یک سری خاصیت و متد هم در این کلاس پایه وجود دارند. یکی از این‌ها دقیقا this.HttpContext است که برای آن یک متد الحاقی به نام CacheInsert  تهیه شده. بنابراین نحوه فراخوانی آن در یک اکشن متد به صورت this.HttpContext.CacheInsert است که this آن در مطلب فوق عنوان نشده و ضروری هم نیست.
‫۱۱ سال و ۸ ماه قبل، یکشنبه ۲۲ بهمن ۱۳۹۱، ساعت ۲۰:۴۹
- در مثال قسمت هفتم، رابطه مشتری با عادت‌های آن «one-to-zero-or-one» است. یک مشتری رو میشه تعریف کرد، صرفنظر از عادت‌های ویژه او؛ البته نه برعکس.
- در مثال سایت MVC، رابطه دپارتمان و ادمین آن هم «one-to-zero-or-one» است. به این نحو هم تعریف شده
modelBuilder.Entity<Department>()
    .HasOptional(x => x.Administrator);
بدون اضافه کردن قسمت WithRequired و با داشتن یک Id نال پذیر در کلاس دپارتمان:
public int? InstructorID { get; set; }
اگر به تعاریف آن دقت کنید، کلاس Instructor رابطه‌ای با دپارتمان نداره اما رابطه دپارتمان با ادمین آن که از نوع Instructor است نال پذیر تعریف شده تا رابطه «یک به صفر یا یک» میسر شود.
- رابطه کلاس‌های Instructor و OfficeAssignment مثال سایت MVC مانند مثال قسمت هفتم فوق است و متد WithRequired رو ذکر کرده.
‫۱۱ سال و ۸ ماه قبل، یکشنبه ۲۲ بهمن ۱۳۹۱، ساعت ۰۴:۲۱
- لوسین مستقل است از بانک اطلاعاتی. همچنین یکبار باید این ایندکس را تهیه کنید. اگر تعداد رکوردهای شما بالا است، فقط همان بار اول است که کار تهیه زمانبر خواهد بود. برای دفعات بعد در حد اضافه کردن چند سند لوسین به آن یا به روز رسانی و حذف است و کار دیگری ندارد.
- پس از تهیه ایندکس، جستجوی لوسین کاری به بانک اطلاعاتی شما ندارد. بر روی ایندکس خودش انجام می‌شود و نیازی به جستجوی مجدد در بانک اطلاعاتی شما نیست. یک سیستم مستقل است.
این روش متداول کار با لوسین است و حالت دیگری هم ندارد. این مستقل بودن هم یک مزیت است. برای مثال SQL Server CE یا خیلی از بانک‌های اطلاعاتی دیگر Full Text Search توکار ندارند. اینجا لوسین خوب جواب می‌ده.
ضمن اینکه من در یک دمو استفاده از لوسین برای ایندکس کردن کل اطلاعات ویکی‌پدیا رو دیدم. تهیه ایندکس آن یک روز کار برده بوده (با توجه به حجم اطلاعات بالای ویکی پدیا)، اما جستجوی آن فوق العاده سریع و با کیفیت بود. این ویدیو رو در اینجا می‌تونید مشاهده کنید:
‫۱۱ سال و ۸ ماه قبل، جمعه ۲۰ بهمن ۱۳۹۱، ساعت ۰۲:۳۶
قابل انتقال نیست به سایر بانک‌های اطلاعاتی. یکی از اهداف کار با ORMها مستقل کردن برنامه از بانک اطلاعاتی است. مثلا بتونید با SQL CE هم کار کنید که این نوع داده رو پشتیبانی نمی‌کنه و خیلی از بانک‌های اطلاعاتی دیگر نیز به همین ترتیب.