نظرات مطالب
استفاده از نگارش سوم Google Analytics API در سرویس‌های ویندوز یا برنامه‌های وب
این سه مورد را بررسی کنید:
- آیا مسیر فایل p12 را درست تنظیم کرده‌اید؟ در یک برنامه‌ی وب باید به این نحو باشد:
Server.MapPath("~/folder/" + filename)
- آیا در application pool برنامه‌ی شما load user profile فعال است؟ اگر خیر، crypto susbsystem کار نخواهد کرد:

- تنظیم زیر را هم امتحان کنید:
بجای
var certificate = new X509Certificate2(Authentication.KeyFilePath, Authentication.KeyFilePassword,
 X509KeyStorageFlags.Exportable);
بنویسید:
var certificate = new X509Certificate2(Authentication.KeyFilePath, Authentication.KeyFilePassword,
   X509KeyStorageFlags.MachineKeySet |
   X509KeyStorageFlags.PersistKeySet | 
   X509KeyStorageFlags.Exportable);
نظرات مطالب
EF Code First #13
در این روش چطوری می‌شه دستور Where رو به صورت یک رشته اجرا نمود
به طور مثال این دستور
DBEntities MyDB = new DBEntities();
        var Query1 = from P in MyDB.Per
        where P.IDRANK == 2
        select P;
تبدیل بشه به یه چنین دستوری
string strquery = "where P.IDRANK == 2";
    DBEntities MyDB = new DBEntities();
    var Query1 = from P in MyDB.Per
         strquery 
    select P;
نظرات مطالب
بررسی تفصیلی رابطه Many-to-Many در EF Code first
سلام
در قسمت :
//فقط موارد جدید به تگ‌ها و ارتباطات موجود اضافه می‌شوند
foreach (var tag in data.Tags)
{
     if (!listOfActualTagNames.Contains(tag.ToLowerInvariant().Trim()))
     {
            _tag.Add(new Tag { Title = tag.Trim() });
      }
}
 _uow.SaveChanges(); // ثبت موارد جدید

فقط تگ‌ها در جدول خودشون ذخیره میشن و ارتباطی با پست مربوطه ایجاد نمیشه.
آیا نباید به کد زیر تغییر داد؟
if (!listOfActualTagNames.Contains(tag.ToLowerInvariant().Trim()))
 {
      var tags = new Tag { Title = tag.Trim() };
       _tag.Add(tags);
       posts.Tags.Add(tags);
  }
نظرات مطالب
به روز رسانی ساده‌تر اجزاء ارتباطات در EF Code first به کمک GraphDiff
من از این پکیج استفاده کردم در زمان ثبت مقاله به خوبی کار میکنه اما در زمان بروزرسانی وقتی تگی از مقاله کم میشه اون تگ به صورت فیزیکی از دیتابیس حذف میشه حتی وقتی AssociatedCollection   انتخاب میکنم با خطا مواجه میشه
public void Update(Article entity)
        {
            var item = articles.Find(entity.Id);
            item.Author = entity.Author;
            item.CategoryId = entity.CategoryId;
            item.Content = entity.Content;
            item.Source = entity.Source;
            item.Title = entity.Title;
            if (entity.FileStream != null)
                item.FileStream = new File
                {
                    ContentType=entity.FileStream.ContentType,
                    Id=entity.Id,
                    Size = entity.FileStream.Size,
                    FileBytes = entity.FileStream.FileBytes
                };
            var allTag = tags.ToCacheableList().ToList();
            var tagsList = entity.Tags.ToList().Select(x => x.Name.ToPersianContent(true)).ToArray();


            if (entity.Tags != null && entity.Tags.Any())
            {
                entity.Tags.Clear();
                entity.Tags = new Collection<Tag>();
            }

            var listOfTags = tagsList.Select(tag =>
                allTag.Any(x => x.Name == tag) ?
                allTag.FirstOrDefault(x => x.Name == tag) :
                new Tag { Name = tag }).ToList();

            listOfTags.ForEach(tag => entity.Tags.Add(tag));

            unitOfWork.PwsUpdateGraph(entity, map => map
                .OwnedEntity(p => p.FileStream)
                .OwnedCollection(p => p.Tags));
        }
اشتراک‌ها
ارسال Request ها به صورت Parallel در ASP.NET CORE
    public async Task<IEnumerable<UserDto>> GetUsersInParallelInWithBatches(IEnumerable<int> userIds)
    {
        var tasks = new List<Task<IEnumerable<UserDto>>>();
        var batchSize = 100;
        int numberOfBatches = (int)Math.Ceiling((double)userIds.Count() / batchSize);

        for (int i = 0; i < numberOfBatches; i++)
        {
            var currentIds = userIds.Skip(i * batchSize).Take(batchSize);
            tasks.Add(client.GetUsers(currentIds));
        }
            
        return (await Task.WhenAll(tasks)).SelectMany(u => u);
    }




ارسال Request ها به صورت Parallel در ASP.NET CORE
اشتراک‌ها
مرتب سازی دیکشنری
// Create dictionary and add five keys and values.
        var dictionary = new Dictionary<string, int>();
        dictionary.Add("car", 2);
        dictionary.Add("apple", 1);
        dictionary.Add("zebra", 0);
        dictionary.Add("mouse", 5);
        dictionary.Add("year", 3);

        // Acquire keys and sort them.
        var list = dictionary.Keys.ToList();
        list.Sort();

        // Loop through keys.
        foreach (var key in list)
        {
            Console.WriteLine("{0}: {1}", key, dictionary[key]);
        }
مرتب سازی دیکشنری
اشتراک‌ها
کتابخانه‌ی Formo برای مدیریت فایل‌های Config
The settings

<appSettings>
    <add key="RetryAttempts" value="5" />
    <add key="ApplicationBuildDate" value="11/4/1999 6:23 AM" />
</appSettings>

The code

dynamic config = new Configuration();
var retryAttempts1 = config.RetryAttempts;                 // returns 5 as a string
var retryAttempts2 = config.RetryAttempts(10);             // returns 5 if found in config, else 10
var retryAttempts3 = config.RetryAttempts(userInput, 10);  // returns 5 if it exists in config, else userInput i
کتابخانه‌ی Formo برای مدیریت فایل‌های Config
نظرات مطالب
آموزش Linq - بخش ششم : عملگرهای پرس و جو قسمت دوم
یک مثال :  فرض کنید می‌خواهیم فراوانی کلمات موجود در یک متن را از طریق عملگر GroupBy محاسبه کنیم :
var article = "date datetime datelocal Groups dnttips the elements Groups the elements dnttips the".Split(' ');
var result = article.GroupBy(x => x).Select(x => new { Word = x.Key, Count = x.Count() });
foreach (var item in result)
{
   Console.WriteLine($"{item.Word} : {item.Count}");
}
خروجی
date : 1
datetime : 1
datelocal : 1
Groups : 2
dnttips : 2
the : 3
elements : 2


نظرات مطالب
C# 7 - Tuple return types and deconstruction
بهبود نحوه‌ی انتساب Tuples در حین deconstruction در C# 10.0
پیشتر از یکی از دو روش زیر برای تعریف و مقدار دهی متغیرهای حاصل از deconstruction می‌شد استفاده کرد؛ یا استفاده از var برای هر دو و یا تعریف و مقدار دهی هر دو خارج از deconstruction:
Car car = new("Test", "Blue");

var (model, color) = car;
// Initialization

string model = string.Empty;
string color = string.Empty;
(model, color) = car;
// Assignment
در C# 10.0 این محدودیت برطرف شده‌است و هر دو حالت را می‌توان با هم داشت:
string model = string.Empty;
(model, var color) = car;
// Initialization and assignment
نظرات مطالب
تهیه قالب برای ارسال ایمیل‌ها در ASP.NET Core توسط Razor Viewها
با تشکر از شما این مقاله را دیده بودم ولی مشکل من را حل نکرد . شاید بشه بهتر بگم که در :
var viewEngineResult = _viewEngine.FindView(actionContext, viewNameOrPath, isMainPage: false);
            if (!viewEngineResult.Success)
            {
                viewEngineResult = _viewEngine.GetView("~/", viewNameOrPath, isMainPage: false);
                if (!viewEngineResult.Success)
                {
                    throw new FileNotFoundException($"Couldn't find '{viewNameOrPath}'");
                }
            }

            var view = viewEngineResult.View;
بشه از :
var view = CreateViewFromString(@"@model int <div class="AAA">@Model</div>");
استفاده کرد.