‫۱۰ سال و ۱۱ ماه قبل، دوشنبه ۶ آبان ۱۳۹۲، ساعت ۱۶:۱۴
فرض کنید لایه سرویس هم به این شکل باشد :
public IQueryable<Branch> GetAlls()
{
        return _branchRepository.GetAllwithCorporate();
}

 public IQueryable<Branch> GetAllWithAll()
{
         var CorporateID = _serverApplicationSettingRepository.GetAll().FirstOrDefault().CorporateID;
         return _branchRepository.GetAllWithAll().Where(x => x.CorporateID == CorporateID);
}

مساله ای که هست اینه که ما نمیخواهیم برای بیرون کشیدن یک رکورد در Controller، در لایه سرویس یا مخزن کل رکوردها رو بیرون بکشیم.
اگر قرار باشد در لایه سرویس از نوع IList یا IEnumberable برای خروجی استفاده کنیم، یعنی در واقع کل رکوردها رو واکشی کردیم که شاید فقط در Controller نیاز به یک رکورد باشد. یعنی بستن کوئری در لایه سرویس یا مخزن، ممکنه باعث اجبار در واکشی همه رکوردها در لایه‌های پایین، حتی برای حالتی که ما فقط به یک رکورد نیاز داریم بشه.
پس راه حل چیه؟
‫۱۰ سال و ۱۱ ماه قبل، یکشنبه ۵ آبان ۱۳۹۲، ساعت ۲۲:۱۷
کلاس‌های Repository که در مثال Pluralsight نوشته شدند بعضا نوع بازگشتی IQueryable دارند که در نهایت به  یک leaky abstraction رسیده است. 
منظور شما این است که نباید خروجی توابع درون Repository از نوع IQueryable باشد؟
مثلا من توی پروژم BranchRepository را به صورت زیر پیاده کردم. آیا این روش ایراد دارد؟ 
 public interface IBranchRepository
    {
        IQueryable<Branch> GetAll();
        IQueryable<Branch> GetAllWithAll();
        void Update(Branch branch);
        void Create(Branch branch);
        void Delete(Branch branch);
        IQueryable<Branch> GetAllwithCorporate();
    }

    public class BranchRepository : BaseRepository, IBranchRepository
    {
        public BranchRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
        {
        }

        public IQueryable<Branch> GetAll()
        {
            return GetDbSet<Branch>();
        }

        public IQueryable<Branch> GetAllWithAll()
        {
            return GetDbSet<Branch>().Include(x=>x.Corporate).Include(x=>x.City).Include(x=>x.Province);
        }


        public IQueryable<Branch> GetAllwithCorporate()
        {
            return GetDbSet<Branch>().Include(x=>x.Corporate);
        }

        public void Update(Branch branch)
        {
            SetCurrentValues(GetDbSet<Branch>().FirstOrDefault(x => x.BranchID == branch.BranchID),branch);
            unitOfWork.SaveChanges();
        }
        public void Create(Branch branch)
        {
            GetDbSet<Branch>().Add(branch);
            unitOfWork.SaveChanges();
        }

        public void Delete(Branch branch)
        {
            GetDbSet<Branch>().Remove(branch);
            unitOfWork.SaveChanges();
        }
    }

‫۱۰ سال و ۱۱ ماه قبل، شنبه ۴ آبان ۱۳۹۲، ساعت ۲۰:۴۷
بله ولی نه به صورت مستقیم. OnChange در تردی (thread) اجرا می‌شود که UI یک برنامه وب در آن قرار ندارد و در چرخه طول عمر یک صفحه وب قرار نمی‌گیرد. به همین جهت باید این روش را با SignalR ترکیب کرد. SignalR در OnChange پیام می‌فرسته به کلاینت‌ها که تغییری صورت گرفته. آن‌ها یک درخواست به سرور ارسال می‌کنند تا آخرین تغییرات را واکشی کنند. اینبار این واکشی بدیهی است در ترد UI برنامه انجام می‌شود.
‫۱۰ سال و ۱۱ ماه قبل، شنبه ۴ آبان ۱۳۹۲، ساعت ۱۹:۲۵
آیا از رویداد OnChange کلاس SqlDependency میتوان در برنامه‌های وب استفاده کرد یا نه ؟
چون قبلا در مقاله ای از آقای راد دیگم که گفته بود نمیتوان ! خودم هم چند بار تست کردم جواب نگرفتم. اما در چند مقاله هم دیدم استفاده شده؛ خلاصه حسابی گیج شدم !
‫۱۰ سال و ۱۱ ماه قبل، پنجشنبه ۲ آبان ۱۳۹۲، ساعت ۱۲:۵۰
در قسمت اشتراک‌های سایت، روی عنوان هر مطلب کلیک کنید، به مقصد نهایی آن هدایت خواهید شد.
بررسی LocalDB
‫۱۰ سال و ۱۱ ماه قبل، پنجشنبه ۲ آبان ۱۳۹۲، ساعت ۰۸:۱۱
سلام. این قسمت لیتکی نداره یا من نمی‌بینمش.. برای ادامه بحث localdbو پابلیشش می‌خواستم.