زمانی که وهله جدیدی از یک موجودیت توسط متد Add یا ترجیحا در این شرایط خاص با استفاده از متد AddAsync به Context اضافه شود، برای مقدار دهی شناسه آن، یک کوئری برای دریافت مقدار بعدی از Sequence معرفی شده اجرا خواهد شد. این فرآیند قبل از فراخوانی SaveChanges می‌باشد. از الگوریتم HiLo در اینجا برای کاهش تعداد کوئری‌ها برای دریافت شناسه تک تک وهله‌ها و رفع یکسری مشکلات دیگر که در استفاده مستقیم از Sequence‌ها وجود دارد، کمک گرفته شده است. 
‫۵ سال و ۱ ماه قبل، دوشنبه ۱۴ مرداد ۱۳۹۸، ساعت ۰۲:۲۰
بررسی شد، مشکلی یافت نشد. برای تست، پروژه DNTFrameworkCore.TestAPI را اجرا کرده و با ابزار Postman درخواست زیر را انجام دهید.

درخواست PUT (حذف Blogs_Edit، ویرایش Blogs_Create و افزودن Blogs_UseCase)
{
    "name": "Administrators",
    "description": "حذف گروه کاربری پیش فرض «مدیران سیستم» باعث ایجاد اختلال در کارکرد صحیح سیستم خواهد شد.",
    "permissions": [
        {
            "name": "Blogs_View1",
            "id": 1,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Tasks_Edit",
            "id": 2,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Tasks_Create",
            "id": 3,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Tasks_View",
            "id": 4,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Users_Delete",
            "id": 5,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Users_Edit",
            "id": 6,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Users_Create",
            "id": 7,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Tasks_Delete",
            "id": 8,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Users_View",
            "id": 9,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Roles_Edit",
            "id": 10,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Roles_Create",
            "id": 11,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Roles_View",
            "id": 12,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Blogs_Delete",
            "id": 13,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Blogs_Create1",
            "id": 15,
            "trackingState": "Modified",
            "modifiedProperties": null
        },
        {
            "name": "Blogs_UseCase",
            "trackingState": "Added"
        },
        {
            "name": "Blogs_Edit",
            "id": 14,
            "trackingState": "Deleted"
        },
    ],
    "rowVersion": "AAAAAAAAF3M=",
    "id": 1
}

پاسخ سرور:
{
    "name": "Administrators",
    "description": "حذف گروه کاربری پیش فرض «مدیران سیستم» باعث ایجاد اختلال در کارکرد صحیح سیستم خواهد شد.",
    "permissions": [
        {
            "name": "Blogs_View1",
            "id": 1,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Tasks_Edit",
            "id": 2,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Tasks_Create",
            "id": 3,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Tasks_View",
            "id": 4,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Users_Delete",
            "id": 5,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Users_Edit",
            "id": 6,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Users_Create",
            "id": 7,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Tasks_Delete",
            "id": 8,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Users_View",
            "id": 9,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Roles_Edit",
            "id": 10,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Roles_Create",
            "id": 11,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Roles_View",
            "id": 12,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Blogs_Delete",
            "id": 13,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Blogs_Create1",
            "id": 15,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        },
        {
            "name": "Blogs_UseCase",
            "id": 17,
            "trackingState": "Unchanged",
            "modifiedProperties": null
        }
    ],
    "rowVersion": "AAAAAAAAF3Q=",
    "id": 1
}

دقت کنید که خاصیت راهبری Permissions را در متد BuildFindQuery کلاس سرویس خود، Include کرده باشد.
نکته تکمیلی: در نسخه‌های جدید این زیرساخت، خصوصیت ModifiedProperties به کلاس TrackableEntity به عنوان کلاس پایه موجودیت‎‌هایی که نیاز به TrackingState دارند، اضافه شده است. اگر قصد دارید همه خصوصیات یک رکورد ویرایش شوند، این خصوصیت را با null مقداردهی کنید.

جهت اطلاع
به عنوان راهکاری جهت کاهش حجم کوکی/توکن احراز هویت، امکان PackedPermission اضافه شد.
سوال: بدون نگهداری لیست دسترسی‌های پویای کاربر در کوکی/توکن، بازهم امکان استفاده از این زیرساخت را خواهیم داشت؟
بله؛ اگر قصد استفاده از مکانیزم PackedPermission را ندارید، با بازطراحی انجام شده و به دلیل عدم فراخوانی context.Fail()‎ در هندلر پیش فرض، امکان پیاده سازی AuthorizationHandler متناظر با PermissionAuthorizationRequriment را خواهید داشت که می‎تواند مستقیم از بانک اطلاعاتی نیز بررسی دسترسی به منابع مورد نظر را انجام دهد.

claims.Add(new Claim(UserClaimTypes.PackedPermission,
    new[] {"48", "65", "6C", "6C", "6F", "20", "57", "6F", "72", "6C", "64", "21"}
        .PackPermissionsToString()));

اگر از روش مطرح شده در مطلب « طراحی یک گرید با jQuery Ajax و ASP.NET MVC به همراه پیاده سازی عملیات CRUD»  استفاده می‌کنید، یک چنین نیازی خواهید داشت؛ اکشن‌متد زیر در قالب مشخصی این اطلاعات را به پارشال‌ویو مورد نظر ارسال خواهد کرد.
public async Task<IActionResult> List(TFilteredPagedQueryModel query)
{
    if (!await CheckPermissionAsync(ViewPermissionName)) return Forbid();

    query = query ?? Factory<TFilteredPagedQueryModel>.CreateInstance();
    var result = await ReadPagedListAsync(query);

    var model = new PagedListModel<TReadModel, TFilteredPagedQueryModel>
    {
        Query = query,
        Result = result
    };

    return PartialView(ListViewName, model);
}

نکته تکمیلی 
امکان مشخص کردن یکسری فیلد برای ریست شدن خودکار شماره‌ها در نسخه جدید کتابخانه DNTFrameworkCore.EFCore.SqlServer اضافه شد.
options.NumberedEntityMap[typeof(Invoice)] = new NumberedEntityOption
{
    Start = 1,
    IncrementBy = 1,
    FieldNames = new[] {nameof(Invoice.BranchId), nameof(Invoice.SaleMethodId), nameof(Invoice.ZonedDate)}
};