동시성 토큰Concurrency Tokens

참고

이 페이지에서는 동시성 토큰을 구성 하는 방법을 설명 합니다.This page documents how to configure concurrency tokens. 응용 프로그램에서 동시성 충돌을 처리 하는 방법에 대 한 예제와 동시성 제어의 EF Core 작동 방식에 대 한 자세한 설명은 동시성 충돌 처리 를 참조 하세요.See Handling Concurrency Conflicts for a detailed explanation of how concurrency control works on EF Core and examples of how to handle concurrency conflicts in your application.

동시성 토큰으로 구성 된 속성은 낙관적 동시성 제어를 구현 하는 데 사용 됩니다.Properties configured as concurrency tokens are used to implement optimistic concurrency control.

구성Configuration

public class Person
{
    public int PersonId { get; set; }

    [ConcurrencyCheck]
    public string LastName { get; set; }

    public string FirstName { get; set; }
}

Timestamp/rowversionTimestamp/rowversion

Timestamp/rowversion는 행이 삽입 되거나 업데이트 될 때마다 데이터베이스에서 새 값이 자동으로 생성 되는 속성입니다.A timestamp/rowversion is a property for which a new value is automatically generated by the database every time a row is inserted or updated. 또한 속성은 동시성 토큰으로 처리 되므로 업데이트 하는 행이 쿼리 이후 변경 된 경우 예외를 받게 됩니다.The property is also treated as a concurrency token, ensuring that you get an exception if a row you are updating has changed since you queried it. 정확한 세부 정보는 사용 되는 데이터베이스 공급자에 따라 달라 집니다. SQL Server의 경우 일반적으로 byte [] 속성이 사용 됩니다 .이 속성은 데이터베이스에서 ROWVERSION 열로 설정 됩니다.The precise details depend on the database provider being used; for SQL Server, a byte[] property is usually used, which will be set up as a ROWVERSION column in the database.

다음과 같이 속성을 timestamp/rowversion로 구성할 수 있습니다.You can configure a property to be a timestamp/rowversion as follows:

public class Blog
{
    public int BlogId { get; set; }

    public string Url { get; set; }

    [Timestamp]
    public byte[] Timestamp { get; set; }
}