نظرات مطالب
تفاوت بین Interface و کلاس Abstract در چیست؟
نیازی به تکرار سابقه‌ی امکان داشتن تعاریف پیش‌فرض در کلاس‌های abstract و بعد از چندسال فراهم شدن مانند آن در اینترفیس‌ها، وجود همزمان طراحی‌های قدیمی و جدید و همچنین مفهوم، امکانات و کاربرد کلاس پایه‌ی Controller ای که به آن اشاره شد، نیست. همچنین مطالبی در مورد Overengineering و Generic repository‌ها هم مهم هستند. مطلب عنوان شده، دعوت به پرهیز از Overengineering  بود که اگر اینترفیس‌ها قراردادی را تعریف می‌کنند و کلاس‌های abstract هم می‌توانند مانند آن‌ها هم قراردادی را تعریف کرده و هم پیاده سازی‌های پیش‌فرضی را ارائه دهند که شبیه به تعریف قالب‌ها عمل می‌کنند، چه نیازی است تا در بالای یک کلاس abstract، یک interface را هم به عنوان قرار داد پایه تعریف کرد؛ درحالیکه این کلاس abstract باید تک تک اعضای این اینترفیس را مجددا به نحوی تکرار کند؛ یا باید آن‌ها را پیاده سازی کند (تکرار با پیاده سازی و به معنای تعریف یک قالب برای کلاسی که قرار است از آن مشتق شود) و یا باید توسط واژه‌ی کلیدی abstract، پیاده سازی آن‌‌ها را به کلاس مشتق شده‌ی از آن واگذار کند (تکرار با واگذاری و به معنای تعریف یک قرارداد، شبیه به تکرار اجباری اعضای همان اینترفیسی که از آن مشتق شده!).
نظرات مطالب
توسعه برنامه های Cross Platform با Xamarin Forms & Bit Framework - قسمت چهارم

من از طریق کابل گوشیم رو وصل کردم اما در موارد زیر مشکل دارم میشه توضیح بدید چه باید کرد:

1- آنجا که نوشته اید " اولین بار دو برنامه بر روی گوشی شما نصب می‌شوند که برای کار دیباگ در Xamarin لازم هستند" باید دو برنامه در گوشیم نصب بشه ولی فقط یه برنامه نصب شده .

2- طبق نوشته " خوشبختانه به واسطه وجود Xaml edit and continue احتیاجی به Stop - Start کردن پروژه و بیلد کردن برای اعمال تغییرات UI نیست و به محض تغییر Xaml ، می‌توانید تاثیر آن را در گوشی خود ببینید. ولی برای هر تغییر CSharp باید Stop - Start و Build کنید." اگر بصورت Emulator برنامه را اجرا کنم با تغییر کد در xml موارد در شبیه ساز هم تغییر میکند اما در کدهای سی شارپ اصلا اجازه نمیده کدها رو تغییر بدم (از طریق stop – continue ) و در حالتی که از طریق   گوشیم بخوام استفاده کنم (بجای شبیه ساز)، با تغییر کدهای xml هم نمیشه تغییرات را روی گوشیم دید و برای کدهای سی شارپ هم که مثل Emulator عمل میکنه یعنی اجازه تغییر نمیده. ولی اگر  روی کدی break point بذارم برنامه را در همانجا break point درست عمل میکنه اما باز نمیتوان کد سی شارپ را تغییر داد.

  ویندوز 10 ورژن 1809
vs2017 ورژن 15.9.4
نظرات مطالب
سفارشی سازی ASP.NET Core Identity - قسمت پنجم - سیاست‌های دسترسی پویا
در مثالی که شما لینک دادید من متوجه اختلاف و دلیل نشدم.
می خوام از یک گرید Telerik استفاده کنم، در UserManagerController   یک متد اضافه می‌کنم به شکل زیر 
        public IActionResult Users_Read([DataSourceRequest] DataSourceRequest request)
        {
            return Json(_userManager.Users.ToDataSourceResult(request));
        }

کد گرید هم به این صورت هست
@(Html.Kendo().Grid<User>()
            .Name("grid")
            .Columns(columns =>
            {
                columns.Bound(c => c.FirstName).Width(140);
                columns.Bound(c => c.LastName).Width(140);
                columns.Bound(c => c.UserName).Width(140);
            })
            .HtmlAttributes(new { style = "height: 380px;" })
            .Pageable(pageable => pageable
                .Refresh(true)
                .PageSizes(true)
                .ButtonCount(5))
            .DataSource(dataSource => dataSource
                .Ajax()
                .Read(read => read.Action("Users_Read", "UserManager"))
            )
)
ولی باز هم خطای 401 دریافت می‌کنم.

اگر ممکنه باشه می‌خوام شبیه مثال خودتون، برای این متد دستری اعمال نکنم. آیا این امکان دارد؟ یا حتما باید شبیه Action‌های دیگر دسترسی پویا براش در نظر بگیرم؟

نظرات مطالب
بررسی تفصیلی رابطه Many-to-Many در EF Code first
سلام. من ساختاری شبیه به این دارم:
public class Person
{
        //...
        public virtual IList<Center> PreferedCenters { get; set; }
        public virtual IList<Center> ActiveCenters { get; set; }

        public Person()
        {
            PreferedCenters = new List<Center>();
            ActiveCenters = new List<Center>();
        }
}
و کلا Center هم به شکل زیره:
public class Center
{
    //...
    public virtual IList<Person> Persons { get; set; }

    public Center()
    {
        Persons = new List<Person>();
    }
}
مشکلی که دارم اینه که منطقا باید دوتا رابطه‌ی Many-to-many تشکیل بشه: ActiveCenters و PreferedCenters. ولی توی جدول خروجی EF، فقط ستونی به اسم Center_ID ساخته می‌شه و وقتی هم که می‌خوام به سیستم چیزی اضافه کنم اروری شبیه به این می‌گیرم: 
An unhandled exception of type 'System.InvalidOperationException' occurred in EntityFramework.dll

Additional information: Multiplicity constraint violated. The role 'Center_Persons_Source' of the relationship 'Yarigaran.DataLayer.Center_Persons' has multiplicity 1 or 0..1.
نظرات مطالب
EF Code First #14
ممنون از راهنماییتون، پروژه رو نگاه کردم، شبیه به سناریو فوق در بخش ویرایش یک پست وجود داره که در اونجا رابطه یک به چند بین Post  و DownLoadLink هست.
اما روشی که برای ویرایش در اونجا استفاده شده به این صورت هست که ابتدا در در اکشن متد   EditPost کنترلر   PostController  ناحیه ادمین، همه DownLoadLink های پستی که در حال ویرایش آن هستیم، پاک میشوند و سپس در متد EditPost مربوط به PostService، دانلودلینکهای  EditPostModel  به جای آنها مینشینند، در واقع در صورت ویرایش دانلودلینکهای یک پست، ویرایش واقعی انجام نمیشود، بلکه این کار با حذف(sql Delete) کلیه دانلودلینکهای آن پست از DB و درج مجدد دانلودلینکهای تغییر یافته و نیافته (sql Insert) ، شبیه سازی میشود. درست است که نتیجه کار با ویرایش واقعی(sql Update) تفاوت نمیکتد اما به نظر من ویرایش با این روش سه مشکل زیر را دارد:
  1. حتی اگر هنگام ویرایش یک پست هیچ تغییری در دانلودلینکها داده نشود باز هم حذف تمامی آنها و درج مجدد آنها صورت خواهد گرفت.
  2. پایین آمدن کارایی وقتی که تعداد رکوردهای طرف چندِ رابطۀ یک به چند زیاد باشد(در اینجا دانلودلینکها).
  3. در برخی موارد مثل مورد زیر که طرف چند رابطه ( OrderLine ) دارای ارتباطاتی باشد، حذف فیزیکی  و درج مجدد آن به هنگام ویرایش Order دردسرساز خواهد شد:

آیا راهی برای رفع این موارد وجود دارد؟ به عبارت دیگر آیا راهی وجود دارد که به جای حذف فیزیکی رکوردها و درج تغییرات(Delete,Insert)؛ فقط تغییرات را اعمال کنیم(Update)؟
مطالب
بازنویسی رویدادها در jQuery
فرض کنید می‌خواهید برای تمام دکمه‌های حذف، در کل پروژه، قبل از انجام عمل اصلی، یک confirm را به کاربر نشان دهید تا اگر کاربر بر روی کلید تایید، کلیک نمود، عمل مورد نظر انجام شود. برای چنین کاری در یک layout اصلی (و یا یک فایل js ) کدی شبیه به قطعه کد زیر را نوشته‌ایم:
$(document).ready(function () {
    $(document).on('click', '.confirm', function () {
        alert("Clicked Me !");
    });
});

حال فرض کنید در یکی از صفحات  قصد داریم اگر بر دکمه‌ای که قبلا برای آن رویدادی نوشته‌ایم  (منظور کد‌های بالا می‌باشد)، کلیک شد، یکسری عملیات دیگر، جدای از آن عملیات انجام شود. برای اینکار در صفحه مربوطه، کدی شبیه زیر را نوشته‌ایم :
$(document).ready(function () {
    $(document).on('click', '.confirm', function () {
        alert("Clicked Me On nested Page !");
    });
});

اگر پروژه را اجرا نمایید و بر روی دکمه مربوطه کلیک نماییم، هر دو Event نوشته شده، اجرا خواهند شد. در چنین حالتی تکلیف چیست و چکار باید کرد؟ جواب: selector را تغییر دهیم :خیر.
برای این کار می‌توان رویداد کلیک را برای تگ مورد نظر با استفاده از متد off بازنویسی کنیم:
$(document).off('click', '.confirm');

- روش‌هایی دیگر برای انجام این کار:
$(".confirm").removeAttr("onclick");
$( ".confim").unbind( "click" );
بازخوردهای دوره
تزریق وابستگی‌های AutoMapper در لایه سرویس برنامه
- استثنای صادر شده مربوط است به یافت نشدن اسمبلی System.Web.Http. در لیست ارجاعات برنامه، این ارجاع را یافته و خاصیت copy to local آن‌را true کنید؛ چیزی شبیه به این مشکل
- همچنین اگر Solution شما چند پروژه‌ای است، احتمال دارد که قسمت‌های مختلف آن از اسمبلی‌های مشابهی، اما با نگارش‌های مختلفی استفاده می‌کنند. اگر این اسمبلی‌ها از طریق نیوگت اضافه شده‌اند، دستور ذیل را صادر کنید:
PM> Update-Package
اگر خیر، فایل‌های csproj را باید تک تک بررسی کنید و شماره نگارش‌های اسمبلی‌های مشابه را تطابق دهید.
- مطلب «به روز رسانی قسمت assemblyBinding فایل‌های config توسط NuGet» را هم مدنظر داشته باشید.  
بازخوردهای دوره
نگاهی به SignalR Clients
Context.ConnectionId رو مثلا چیزی شبیه به سشن آی دی یک کاربر در ASP.NET درنظر بگیرید. دقیقا همان لحظه که به سرور و هاب متصل می‌شود، یک Context.ConnectionId منحصربفرد برای او تولید می‌شود. بر این اساس می‌شود به صورت اختصاصی به یک کاربر دسترسی یافت.
حالا در سمت کلاینت در این مثال بحث جاری پیغام سلام ارسال شده (برای توضیح مفاهیم). کاربر و کلاینت می‌تونه نام کاربری و کلمه عبور را در ابتدا به هاب ارسال کند. سپس بر این اساس سرور او را معتبر شمرده و Context.ConnectionId او را مورد پذیرش و پردازش قرار خواهد داد (یا خیر). بجای chat.server.sendMessage در مثال جاری مثلا یک chat.server.login را طراحی کنید. این متدی از Hub است که توسط کلاینت فراخوانی می‌شود. در اینجا پس از موفقیت آمیز بودن لاگین، ConnectionId او را معتبر شمرده و استفاده کنید.
نظرات اشتراک‌ها
روش کاهش چشمگیر میزان مصرف اینترنت ویندوز 8
نکته‌ای در مورد ویندوز 10
ویندوز 10 دارای قابلیتی است به نام «Windows Update Delivery Optimization». این مورد سیستم شما را تبدیل به یک «به اشتراک گذارنده‌ی به روز رسانی‌ها» در شبکه و یا اینترنت می‌کند (چیزی شبیه به تورنت).
اگر از نسخه‌ی سازمانی استفاده می‌کنید، این قابلیت فقط در شبکه‌ی داخلی فعال است که سبب صرفه جویی قابل ملاحظه‌ای برای دریافت به روز رسانی‌ها در یک شرکت یا مجموعه خواهد شد. در مورد سایر نسخه‌ها، خیر و این به اشتراک گذاری در سطح اینترنت است.
برای خاموش کردن آن مسیر ذیل را طی کنید:
Start Start > Settings > Update & security > Windows Update > Advanced options
  Choose how updates are delivered, and then use the toggle to turn Delivery Optimization off
اطلاعات بیشتر
نظرات اشتراک‌ها
Visual Studio 2012 نسخه Final عرضه شد
ممکنه مشکل از افزونه‌ها باشند. VS.NET را در حالت safe mode اجرا و بعد مصرف حافظه آن‌را بررسی کنید:
"c:\Program Files\Microsoft Visual Studio version\Common7\IDE\devenv.exe" /safemode /nosplash /log
شبیه به همین مساله با فایرفاکس هم هست. در حالت safe mode (یعنی اجرا توسط help menu -> restart with add-ons disabled) این برنامه آنچنان مصرف حافظه‌ای ندارد. تعداد افزونه‌ها که بالا رفت، چند گیگ حافظه مصرف می‌کند.