تنظیم یک Sequence به صورت زیر
modelBuilder.HasSequence<int>("OrderNumbers", schema: "shared")
           .StartsAt(1000).IncrementsBy(5);
که از عدد 1000 شروع شده و واحد افزایش آن 5 است، سبب تولید یک CREATE SEQUENCE جدید در بانک اطلاعاتی می‌شود و به صورت مستقل با کوئری select next value for shared.OrderNumbers، قابل بازیابی است. هر بار فراخوانی این کوئری سبب تولید اعداد 1000، 1005 و ... می‌شود. یعنی قبل از insert، بازه‌ی مورد استفاده و اعداد آن کاملا مشخص است. بعد یکی از روش‌های استفاده از این Sequence، مقدار دهی Id جدول است:
modelBuilder.Entity<PrimaryKeyWithSequence>(entity =>
     {
       entity.Property(e => e.PrimaryKeyWithSequenceId).HasDefaultValueSql("NEXT VALUE FOR [PrimaryKeyWithSequenceSequence]");
     });
و به صورت زیر جهت تعریف جدول مورد استفاده قرار می‌گیرد:
CREATE TABLE PrimaryKeyWithSequence
(
    ID int PRIMARY KEY CLUSTERED
        DEFAULT (NEXT VALUE FOR [PrimaryKeyWithSequenceSequence]),
    Field1 nvarchar(300) NULL
) ;
این یک روش مقدار دهی Id در سمت دیتابیس با یک سری اعداد مشخص است.
اما برای حالت batch و مشخص بودن Id آن‌ها، از همین روش با متد خاص ForSqlServerUseSequenceHiLo استفاده می‌شود:
modelbuilder.HasSequence<int>("DBSequenceHiLo")
                  .StartsAt(1000).IncrementsBy(5);
modelbuilder.ForSqlServerUseSequenceHiLo("DBSequenceHiLo");
که یک چنین SEQUENCE ای را ایجاد می‌کند:
CREATE SEQUENCE [dbo].[DBSequenceHiLo] 
 AS [int]
 START WITH 1000
 INCREMENT BY 5
 MINVALUE -2147483648
 MAXVALUE 2147483647
 CACHE 
GO
بعد در این حالت با داشتن یک چنین insertهایی :
using (var dataContext = new SampleDBContext())
{
    dataContext.Categories.Add(new Category() { CategoryName = "Clothing" });
    dataContext.Categories.Add(new Category() { CategoryName = "Footwear" });
    dataContext.Categories.Add(new Category() { CategoryName = "Accessories" });
    dataContext.SaveChanges();
    dataContext.Products.Add(new Product() { ProductName = "TShirts" });
    dataContext.Products.Add(new Product() { ProductName = "Shirts" });
    dataContext.Products.Add(new Product() { ProductName = "Causal Shoes" });
    dataContext.SaveChanges();
}
ابتدا یکبار Idهای مورد نیاز سه insert اول، دریافت می‌شوند:

و سپس کوئری insert اصلی، دارای idهای از پیش تعیین شده‌ای می‌شود که اینبار نیازی نیست تا یکی یکی رکوردها insert شوند و id بعدی محاسبه شود:

‫۴ سال و ۸ ماه قبل، یکشنبه ۲۲ دی ۱۳۹۸، ساعت ۲۳:۰۸
- این توضیح جهت اطلاع مرتبط با نگارش 3x است.
+ تفاوتی نمی‌کند و باید وجود داشته باشد. نمونه مثال Microsoft.AspNetCore.SpaServices.Extensions جدید به صورت زیر است:
using Microsoft.AspNetCore.SpaServices.AngularCli;
using Microsoft.AspNetCore.SpaServices.VueCli;
// ...

namespace Test
{
    public class Startup
    {
       // ...
 
         public void ConfigureServices(IServiceCollection services)
        {
            // ...

            // In production, the SPA files will be served from this directory
            services.AddSpaStaticFiles(configuration =>
            {
                configuration.RootPath = "ClientApp/dist";
            });
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            // ...

            app.UseRouting();
            app.UseEndpoints(endpoints =>
            {
              // ...   
            });

            app.UseSpa(spa =>
            {
                spa.Options.SourcePath = "ClientApp";

                if (env.IsDevelopment())
                {
                    // spa.UseAngularCliServer(npmScript: "start");
                    // spa.UseVueCliServer(npmScript: "serve");
                }
            });
        }
    }
}
‫۴ سال و ۸ ماه قبل، یکشنبه ۲۲ دی ۱۳۹۸، ساعت ۲۲:۵۸
- با نگارش 3.1 مشکلی مشاهده نشد (هیچ تغییری نداشته): net-core-31-final-poco-controller.zip
- حذف کردن ارث‌بری از کلاس پایه کنترلر، نیاز به یکسری تغییرات را هم در کدهای شما خواهد داشت که تعدادی از نکات آن، در انتهای بحث عنوان شد‌ه‌اند؛ مانند  تزریق ActionContext و بازگشت new ContentResult بجای return Content، چون این return Content از کلاس پایه کنترلر تامین می‌شود. اگر آن‌را حذف کردید، باید جستجو کنید که return Content، ساده کننده‌ی چه چیزی در پشت صحنه هست و امثال این. این نوع نکات هم با مفاهیم ASP.NET MVC 5x یکی است: « ASP.NET MVC #6»  
- در Redux فقط یک store سراسری وجود دارد که در برگیرنده‌ی تمام اشیاء حالت‌های کامپوننت‌های مختلف برنامه است. علتش را هم در قسمت اول این سری مطالعه کنید که اصلا چرا به آن نیاز هست. علت انجام اینکارها چی هست. چه مشکلی وجود داشته که نیاز به store سراسری حس شده که بعد از آن مفاهیم مدیریت حالت سراسری ارائه شده‌اند.
- در Mobx می‌توان از چند store سراسری استفاده کرد. طراحی این storeها با خود شما است و برخلاف Redux که دسترسی مستقیمی به آن نیست، در اینجا می‌توان مستقیما خواص observable آن‌را تغییر داد و یا متدهایی را که به صورت action علامتگذاری شده‌اند، فراخوانی کرد و store را به حالت دیگری تغییر داد. یعنی در کل طراحی شیءگرای store در MobX، کاملا به برنامه نویس واگذار شده‌است. می‌توانید چندین store را به ازای اشیاء حالت کامپوننت‌های مختلف ایجاد کنید و سپس آن‌ها را به عنوان خاصیت‌های عمومی store اصلی که توسط Provider به لایه‌های زرین ارسال می‌کنید، معرفی کنید.