EF Core Postgres Concurrency Checks

Posted on 2019-04-28

在 SQL Server 為了防止 Concurrency 的問題,是在資料表裡面多加一個類似 timestamp 的欄位 (rowversion ) 來解決,而在 Postgres 怎麼解決這個問題 ?

Npgsql 的 document Optimistic Concurrency and Concurrency Tokens 有說明,基本上 Postgres 沒有 rowversion 的機制,不過它有類似的 token 機制,使用上非常方便,只要在資料表設定的地方加上一個設定 ForNpgsqlUseXminAsConcurrencyToken 就好了

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
	modelBuilder.Entity<Blog>()
                .ForNpgsqlUseXminAsConcurrencyToken();
}