‫۲ سال و ۱۰ ماه قبل، جمعه ۳۰ مهر ۱۴۰۰، ساعت ۱۷:۰۰
به روز رسانی
در این تاریخ، تنها کافی است افزونه‌ی Roslynator مخصوص VSCode را نصب کنید (صرفنظر از تمام مطالب این صفحه). سپس به مسیر زیر مراجعه کرده:
%USERPROFILE%\.omnisharp
و به فایل omnisharp.json موجود در آن، تنظیم timeout و سایر تنظیمات زیر را اضافه کنید:
{
    "RoslynExtensionsOptions": {
        "enableDecompilationSupport": true,
        "enableAnalyzersSupport": true,
        "enableImportCompletion": true,
        "enableAsyncCompletion": true,
        "documentAnalysisTimeoutMs": 600000,
        "LocationPaths": [
            "c:/Users/Vahid/.vscode/extensions/josefpihrt-vscode.roslynator-3.2.2/roslyn/common",
            "c:/Users/Vahid/.vscode/extensions/josefpihrt-vscode.roslynator-3.2.2/roslyn/analyzers",
            "c:/Users/Vahid/.vscode/extensions/josefpihrt-vscode.roslynator-3.2.2/roslyn/refactorings",
            "c:/Users/Vahid/.vscode/extensions/josefpihrt-vscode.roslynator-3.2.2/roslyn/fixes"
        ]
    }
}
timeout پیش‌فرض آن 10 ثانیه است که رقم کوچکی است.
‫۲ سال و ۱۰ ماه قبل، پنجشنبه ۲۹ مهر ۱۴۰۰، ساعت ۱۲:۵۹
معرفی «Constant interpolated strings» در C# 10.0

C# 10.0 به همراه تغییر و بهبود جزئی در مورد interpolated strings است. تا پیش از آن، امکان تعریف یک interpolated strings به صورت const وجود نداشت؛ اما اکنون این محدودیت برطرف شده‌است و قطعه کد زیر مجاز است:
const string constStrFirst = "FirstStr";
const string summaryConstStr = $"SecondStr {constStrFirst}";

محدودیت: این نکته تنها در مورد const string‌ها صادق است. برای مثال اگر از const char استفاده شود:
const char a = 'a';
const string constStrFirst = "FirstStr";
const string summaryConstStr = $"SecondStr {constStrFirst} {a}";
با خطای زیر مواجه می‌شویم:
// Error CS0133
// The expression being assigned to
// 'summaryConstStr' must be constant
‫۲ سال و ۱۱ ماه قبل، سه‌شنبه ۶ مهر ۱۴۰۰، ساعت ۱۶:۴۲
یا هر دو را دقیقا مشخص کنید:
 .WithOrigins("http://localhost:4200","https://localhost:4200"));
یا همه را پذیرش کنید:
 .AllowAnyOrigin()
‫۲ سال و ۱۱ ماه قبل، چهارشنبه ۳۱ شهریور ۱۴۰۰، ساعت ۱۶:۲۱
1- خیر. حالت استاندارد است.
2- این مشکلی نیست؛ به همین صورت است. به این مورد روش تعریف کلید خارجی در EF گفته می‌شود. روابط را به همین نحو طراحی می‌کنند و ذکر آن‌ها دلیل بر وجود مشکلی نیست.
3- اساسا ProjectTo طراحی شده تا Lazy loading را لغو کند. اطلاعات بیشتر.
4- بله. Lazy loading بیجا مشکل ساز است و می‌تواند مشکل n+1 select را تولید کند. ضمنا در EF-Core تا Lazy loading را فعال نکنید، اساسا وجود خارجی ندارد و عملکرد پیش‌فرض EF Core با EF 6x یکی نیست.
+ مواردی مانند «آشنایی با SplitQuery در EF Core 5x» را هم مدنظر داشته باشید.
‫۳ سال قبل، دوشنبه ۲۹ شهریور ۱۴۰۰، ساعت ۲۱:۳۷
- زمانیکه از memory cache در ASP.NET Core استفاده می‌کنید، باید دقت داشت که افزودن آیتم‌ها به آن، thread-safe نیست و نیاز به یکسری ملاحظات خاص را دارد.
- می‌توان با تنظیم MemoryCacheEntryOptions و AbsoluteExpiration آن، قسمت حذف دستی آیتم‌های کش را پیاده سازی نکرد.
‫۳ سال قبل، چهارشنبه ۱۷ شهریور ۱۴۰۰، ساعت ۲۰:۵۴
هر طور راحتی. خواستی اینکار رو بکن، به همراه تنظیمات سفارشی خاص هر کدوم، نخواستی یکبار نظرات رو در مورد آدرس نسبی و غیر نسبی بخون. توضیح دادم.
یک نکته‌ی تکمیلی: نیاز به دقت در ویژگی «captured into the closure» در حلقه‌های Blazor

برای مثال حلقه‌ی زیر را در نظر بگیرید:
@for( int c = 0; c < 10; c++ )
{
   <li>
       <a href="#" @onclick="@(_=> OnLinkClicked(c))">@c</a>
   </li>
}
فکر می‌کنید پس از پایان این حلقه و رندر UI، اگر بر روی لینکی کلیک شد، چه مقداری به متد OnLinkClicked ارسال می‌شود؟
برخلاف تصور، با کلیک بر روی تمام لینک‌ها، فقط عدد ثابت 10 به متد  OnLinkClicked ارسال می‌شود. علت آن، همان نکات مطلب «بررسی مفهوم Captured Variable در زبان سی شارپ» است که در حین تشکیل حلقه‌های Blazor هم صادق هستند.
برای رفع این مشکل، از یکی از دو روش زیر می‌توان استفاده کرد:
Capture متغیر داخل حلقه:
@for( int c = 0; c < 10; c++ )
{
   var current = c;
   <li>
       <a href="#" @onclick="@(_=> OnLinkClicked(current))">@current</a>
   </li>
}
و یا ایجاد یک حلقه‌ی foreach بر روی یک Enumerable:
@foreach(var c in Enumerable.Range(0,10))
{
   <li>
       <a href="#" @onclick="@(_=> OnLinkClicked(c))">@c</a>
   </li>
}