‫۱۲ سال و ۳ ماه قبل، سه‌شنبه ۲۰ تیر ۱۳۹۱، ساعت ۱۴:۲۵
دنیای WCF ایی که از طریق وب در دسترس است، یک دنیای اصطلاحا detached است. در این حالت زمانیکه ctx.Bills.ToList را فراخوانی می‌کنید، لیست صورتحساب‌ها از سرور دریافت شده و اتصال خاتمه پیدا می‌کند. اینجا دیگر lazy loading معنایی ندارد چون context جاری در سمت سرور بسته شده.
شما زمانی می‌تونید از lazy loading برای بارگذاری اشیاء مرتبط مانند حلقه زیر استفاده کنید:
foreach (var dept in db.Departments)
{
     Console.WriteLine(dept.Name);
      foreach (var item in dept.Employees)
      {
           Console.WriteLine(item.FirstName);
       }
}
که در یک context و در یک اتصال باز به سرور قرار داشته باشید. در این حالت EF تمام اتصالات و رفت و برگشت‌های مورد نیاز را بدون کوئری نوشتن خاصی مدیریت می‌کند.
در WCF یکبار اطلاعات serialize شده و اتصال بسته می‌شود (البته WCF فراتر است از حالت http binding ساده؛ ولی عموما این مورد در برنامه‌های وب مدنظر است). بنابراین اینبار اگر dept.Employees را روی لیست تهیه شده فراخوانی کنید، پیغام بسته بودن اتصال رو دریافت می‌کنید. به همین جهت اگر نیاز به اطلاعات کارمندان هم هست، همه را باید به یکباره از سرور دریافت کرد.



‫۱۲ سال و ۳ ماه قبل، سه‌شنبه ۲۰ تیر ۱۳۹۱، ساعت ۱۳:۱۲
از این دست کتابخانه‌ها  زیاد است. استفاده از این‌ها بیشتر سلیقه‌ای است. یک نفر بر اساس سرعت این‌ها رو بررسی می‌کنه یک نفر بر اساس تعداد قابلیت‌ها. در کل نهایتا تمام این‌ها یک هدف رو برآورده می‌کنند و عموما در Syntax بیشتر با هم تفاوت دارند.

‫۱۲ سال و ۳ ماه قبل، سه‌شنبه ۲۰ تیر ۱۳۹۱، ساعت ۰۰:۲۲
نیازی نیست به صورت مستقیم فراخوانی شود. کار using رها سازی منابع مرتبط با Context است. اینکار در آنجا در Application_EndRequest به صورت خودکار انجام می‌شود (با کد ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects  که نوشته شد). 
‫۱۲ سال و ۳ ماه قبل، دوشنبه ۱۹ تیر ۱۳۹۱، ساعت ۱۸:۱۶
کاری که در اینجا انجام شده ساخت div زیر به صورت پویا است (بر اساس لیست تصاویر دریافت شده از سرور):
<div id="featured"> 
     <img src="img1.jpg" alt="img1" />
     <img src="img2.jpg" alt="img2" />
     <img src="img3.jpg" alt="img3" />
</div>
و سپس فراخوانی متد زیر روی آن:
$('#featured').orbit();

‫۱۲ سال و ۳ ماه قبل، دوشنبه ۱۹ تیر ۱۳۹۱، ساعت ۱۴:۴۶
- روش دیگر تعیین نام صریح کلیدهای خارجی تشکیل شده در سمت دیتابیس در EF Code first استفاده از ویژگی ForeignKey بر روی یک navigation property است. در قسمت سوم این سری به آن اشاره شده است (مورد هشتم متادیتای بررسی شده در آن).
- بله. ولی اگر در این حالت اطلاعات شما در یک گرید نمایش داده شود n هزار بار رفت و برگشت به بانک اطلاعاتی خواهید داشت. در مبحث جاری به آن با ذکر ریزجزئیات و روش حل خاص آن، پرداخته شده است.

‫۱۲ سال و ۳ ماه قبل، دوشنبه ۱۹ تیر ۱۳۹۱، ساعت ۱۳:۴۰
- شما می‌تونید با استفاده از fluent api کنترل کاملی بر روی نام‌های خودکار تولیدی داشته باشید. یک سری پیش فرض در ابتدای امر هست؛ اما تمام این‌ها با fluent api قابل بازنویسی است.
- اینکه چه نامی در بانک اطلاعاتی تولید شده در EF Code first اهمیتی ندارد. شما با اشیاء سروکار دارید. قرار نیست مستقیما از فیلدی کوئری بگیرید یا قرار نیست مستقیما SQL خام بنویسید. زمانیکه از LINQ استفاده می‌کنید تمام ترجمه‌ها خودکار است صرفنظر از اینکه نام‌ها در سمت دیتابیس الان چه چیزی هست.
- تمام navigation property‌‌ها به جداول مورد نظر مراجعه می‌کنند. lazy loading به معنای عدم بارگذاری اطلاعات اشیاء مرتبط در بار اول فراخوانی شیء پایه است و تنها بارگذاری اطلاعات اشیاء وابسته در زمان نیاز. دقیقا در زمانیکه خاصیتی از آن شیء مرتبط فراخوانی شود و نه قبل از آن.
- زمانیکه primary key یک جدول رو دارید بهتر است از متد Find استفاده کنید بجای کوئری LINQ فوق. به این ترتیب از سطح اول کش برخوردار خواهید شد (تعداد کمتر رفت و برگشت به بانک اطلاعاتی).
- شما بدون مشکل می‌تونید مستقیما از خواص اشیاء مرتبط استفاده کنید و اگر می‌خواهید lazy loading را متوقف کنید (خصوصا برای نمایش اطلاعات در یک گرید) فقط کافی است از متد Include یاد شده استفاده کنید.

‫۱۲ سال و ۳ ماه قبل، یکشنبه ۱۸ تیر ۱۳۹۱، ساعت ۲۳:۲۵
نیازی به کرک ندارد. در متن توضیح دادم. ایمیل خودتون رو در سایت آن وارد کرده و یک مجوز یک ماهه دریافت کنید. این مجوز رسمی، دسترسی کامل استفاده از برنامه رو به شما می‌ده.
‫۱۲ سال و ۳ ماه قبل، یکشنبه ۱۸ تیر ۱۳۹۱، ساعت ۰۴:۵۷
ممنون. روش خوبیه. پیشنهاد من این است که بجای 403 از روش زیر استفاده شود:
using System;
using System.Web.Mvc;

namespace SecurityModule
{
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
    public class SiteAuthorizeAttribute : AuthorizeAttribute
    {
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            if (filterContext.HttpContext.Request.IsAuthenticated)
            {
                throw new UnauthorizedAccessException(); //to avoid multiple redirects
            }
            else
            {
                base.HandleUnauthorizedRequest(filterContext);
            }
        }
    }
}
به این ترتیب ریز جزئیات سعی در دسترسی غیرمجاز، توسط ELMAH ثبت خواهد شد.
‫۱۲ سال و ۳ ماه قبل، یکشنبه ۱۸ تیر ۱۳۹۱، ساعت ۰۳:۳۱
بهتره این مباحث رو در انجمن یا mailing list خودش بررسی کنید.
زمانیکه شما نودهای radio رو دارید بقیه‌اش چیزی شبیه به این خواهد بود
string isChecked = element.GetAttributeValue("checked", "unchecked");