اشتراک‌ها
یافتن کامنت ها با برچسب todo,bug,etc با استفاده از Resharper Todo Explorer

در بسیاری ار مواقع هنگام کد نویسی از کامنت‌های مثل

//todo:Do something  
//bug: do something  
استفاده می‌کنیم که بعدا به آنها رسیدگی کنیم ،و در آخر برای اینکه این برچسب‌ها را پیدا کنیم باید در داخل تمامی کدها پیمایش کنیم تا این برچسب‌ها را پیدا و کارهای لازم را انجام دهیم.با کمک resharper به راحتی می‌تونیم لیست تمامی  برچسپ هارو پیدا و کارهای لازم رو انجام بدیم.

یافتن کامنت ها با برچسب todo,bug,etc با استفاده از Resharper Todo Explorer
نظرات مطالب
Iterators در ES 6
با سلام و خداقوت
قسمت پیمایش آرایه توسط iterators در مثال
let iterator = number.values();
نوشته شده و همچنین در توضیح مثال هم number عنوان شده که در صورت اجرا با خطای number is not defined مواجه میشه؛ که متغیر تعریف شده numbers است.
پ.ن: جهت جلوگیری از اشتباه افرادی که در ابتدای راه یادگیری هستند، عنوان شد. (باتشکر)
نظرات مطالب
سفارشی سازی ASP.NET Core Identity - قسمت پنجم - سیاست‌های دسترسی پویا
با سلام؛ من از DistributedCacheTicketStore استفاده کردم و به ازای هر درخواست یک دستور آپدیت بر روی جدول AppSqlCache انجام میشود:
exec sp_executesql
    N'UPDATE [dbo].[AppSqlCache] SET ExpiresAtTime = (CASE WHEN DATEDIFF(SECOND, @UtcNow, AbsoluteExpiration) <= SlidingExpirationInSeconds THEN AbsoluteExpiration ELSE DATEADD(SECOND, SlidingExpirationInSeconds, @UtcNow) END) WHERE Id = @Id AND @UtcNow <= ExpiresAtTime AND SlidingExpirationInSeconds IS NOT NULL AND (AbsoluteExpiration IS NULL OR AbsoluteExpiration <> ExpiresAtTime) ;SELECT Id, ExpiresAtTime, SlidingExpirationInSeconds, AbsoluteExpiration, Value FROM [app].[SqlCache] WHERE Id = @Id AND @UtcNow <= ExpiresAtTime;',
    N'@Id nvarchar(449),@UtcNow datetimeoffset(7)',
    @Id = N'AuthSessionStore-380ca866e7744f569659a3c160eca7ef',
    @UtcNow = '2020-05-24 21:30:11.0837838 +00:00';
و زمان ترافیک سایت آپدیت این جدول باعث کندی می‌شود. آیا ایده‌ی برای حال این مشکل هست؟
اشتراک‌ها
دوره کار با Angular 16 توسط Web API و Entity Framework Core

Angular 16 CRUD with .NET 7 Web API using Entity Framework Core - Full Course

📑 Contents:
00:00:00 Video Introduction
00:00:40 Angular and ASP.NET Core Udemy Course Demo
00:03:07 Prerequisites
00:03:37 Setting Up Development Environment
00:15:37 Create ASP.NET Core Web API
00:20:07 Understanding Files and Folder Structure
00:25:37 Understanding REST and HTTP Verbs
00:30:10 Create .NET 6 Web API
00:32:41 Our Project and Domain Models
00:41:16 Installing Nuget Packages For Entity Framework Core
00:43:06 DbContext
00:59:26 Running EF Core Migrations
01:03:26 Create Controllers and Actions
01:23:46 Repository Pattern
01:36:46 Create New Angular Application using Angular CLI
01:50:09 Angular Components
02:13:29 CRUD in Angular and ASP.NET Core Web APIs
02:17:21 Angular Forms
02:26:59 Angular Services
02:38:09 CORS
02:42:09 Unsubscribing
 

دوره کار با Angular 16 توسط Web API و Entity Framework Core
اشتراک‌ها
آموزش Unit Testing در #C با xUnit

How to become a Zero to Hero in Unit Testing with C# and xUnit ?

Timeline:
Background   0:00:00
Introduction To Fluent Assertions   0:01:12
Setting Up Fluent Assertions 0:02:39
Basic Assertions with Fluent Assertions   0:09:19
Advanced Assertions with Fluent Assertions 0:20:28
Custom Assertions with Fluent Assertions 0:28:32
Test the Custom Person Assertions 0:47:56
Best Practices For Using Fluent Assertions 0:54:21 

آموزش  Unit Testing در #C با xUnit
مطالب
C# 7 - More Expression-Bodied Members
یکی از امکانات جالب سی‌شارپ که در نسخه 6 معرفی شد، قابلیت Expression-Bodied Members بود. در نسخه 7 سی‌شارپ، امکانات جدیدتری اضافه شده است؛ به عنوان مثال اکنون می‌توان برای constructors, finalizers و همچنین get and set برای پراپرتی‌ها و ایندکسرها نیز از این قابلیت استفاده کرد.

 
استفاده از expression body برای constructors 
public class Person
{
    public string FirstName { get; set; }
    public Person(string firstName)
    {
        this.FirstName = firstName;
    }
}
به عنوان مثال اکنون سازنده‌ی کلاس فوق را می‌توانیم از روش block body متداول، به روش expression body، به صورت خلاصه‌تری بنویسیم:
public class Person
{
     public string FirstName { get; set; }
     public Person(string firstName) => this.FirstName = firstName;
}
البته محدودیت این روش این است که تنها برای یک پارامتر می‌توانیم به اینصورت عمل کنیم؛ اما در نسخه‌ 7.1  قرار است قابلیت استفاده از expression body برای بیشتر از یک پارامتر نیز اضافه شود:
public class Person
{
    public string Name { get; }
    public int Age { get; }

    public Person(string name, int age) => (Name, Age) = (name, age);
}

اما اگر نیاز داشتید برای بیشتر از دو متغیر از expression body استفاده کنید می‌توانید از Tuple برای شبیه‌سازی آن استفاده کنید(+):
public class Person
{
    private readonly (string name, int age) _tuple;    

    public string Name => _tuple.name;
    public int Age => _tuple.age;

    public Person(string name, int age) => _tuple = (name, age);
}

استفاده از expression body برای destructors 
public class Resource
{
    ~Resource() => Console.WriteLine("destructor");
}


 استفاده از expression body در get / set accessors 
 در سی‌شارپ 7 برای accessors نیز می‌توانیم از سینتکس جدید expression body استفاده کنیم. به عنوان مثال کد زیر را در نظر بگیرید:
private int _x;
public int X 
{
    get
    {
        return _x;
    }
    set
    {
        _x = value;
    }
}
کد فوق را می‌توانیم در سی‌شارپ 7 به صورت خلاصه‌تری بنویسیم:
private int _x;
public int X 
{
    get => _x;
    set => _x = value;
}

در ویژوال‌استودیوی 2017 نیز با قرار دادن ماوس بر روی پراپرتی x_، استفاده‌ی از سینتکس expression body به شما پیشنهاد داده خواهد شد:


همچنین برای Event Accessors نیز می‌توانیم از این قابلیت استفاده کنیم:

private EventHandler _someEvent;
public event EventHandler SomeEvent
{
    add => _someEvent += value;
    remove => _someEvent -= value;
}


نظرات مطالب
سفارشی سازی ASP.NET Core Identity - قسمت پنجم - سیاست‌های دسترسی پویا
مواردی که اشاره کردید کاملا صحیح است.
موردی را در نظر بگیرید که کاربران به صورت سلسله مراتبی تعریف می‌شوند (تعریف کاربر و محل قرارگیری کاربر در درخت کاربران پویا است)
ما صفحه ای داریم که در آن لاگ رفتار کاربران در آن مشاهده می‌شود، با این قید که هر کاربر می‌تواند فقط لاگ کاربران زیر مجوعه خود را مشاهده کند (یعنی فیلد‌های سطوح دسترسی هست و ما می‌توانیم رکورد‌های مورد نظر را استخراج کنیم) ما به کاربران اجازه مشاهده صفحه (مشاهده لاگ) را می‌دهیم، طبیعتا چون کاربران پویا هستند امکان ایجاد صفحه به ازای هر کاربر وجود ندارد. در این شرایط ایده ای غیر از اعمال دستی فیلتر‌های برای واکشی، هست؟
نظرات مطالب
Accord.NET #1
Accord.NET در حقیقت یک توسعه ای برای AForge.NET است. و چنانچه می‌خواهید از آکورد استفاده کنید بایستی ابتدا AForge.NET نصب نمایید.
AForge.NET یک کتابخانه بسیار عالی است اما در هر کدام از فضای نام هایش نقص هایی وجود دارد که در آکورد دات نت به آن افزوده شده است؛ به عنوان مثال در درختواره فضای نام MachineLearning مستندات دو پروژه مشاهده می‌کنیم که بسیاری از مفاهیم یادگیری ماشین از جمله : دسته بند نیو بیز، بوستینگ، بگینگ، درخت تصمیم، انواع مختلف اعتبارسنجی‌ها و ... در Accord.NET گنجانده شده است.

نظرات مطالب
SQL Antipattern #2
فکر میکنم عموما  پرس‌وجوی بازگشتی اگر ساپورت بشه توسط دیتابیس بهترین روش همان لیست مجاورت هستش که مدیریت درخت رو برامون ساده میکنه و دیتابیس کنترل بشتری رو هر نود ما داره. البته به غیر از مواردی خاص...
ممنون از مطلب مفیدتون ولی سوالی که دارم اینه از نظر Performance مقایسه ای انجام شده که آیا استفاده از لیست بازگشتی چقدر از نظر سرعت در بازیابی اطلاعات با سایر روش‌ها تفاوت داره ؟ مبنعی اگر سراغ دارید ممنون میشم معرفی کنین.

نظرات مطالب
کارهایی جهت بالابردن کارآیی Entity Framework #2
سلام
زمانی که من از این دستور استفاده می‌کنم خطای زیر را دریافت می‌کنم

public static IQueryable<T> PagedForQuery<T>(this IQueryable<T> query, int pageIndex, int pageSize)
        {
            return query.Skip(() => pageSize * (pageIndex - 1)).Take(() => pageSize);
        }

خطا:
Count must be a DbConstantExpression or a DbParameterReferenceExpression.\r\nParameter name: count
لازم به ذکر است که دیتابیس اس کیو ال 2008 و EF DB First استفاده می‌کنم