9.12 翻譯系列:數據註解特性之ConcurrencyCheck【EF 6 Code-First系列】

原文連接:https://www.entityframeworktutorial.net/code-first/concurrencycheck-dataannotations-attribute-in-code-first.aspxhtml

EF 6 Code-First系列文章目錄:sql

在EF 6和EF Core中,ConcurrencyCheck能夠應用於實體的一個或者多個屬性上面。當屬性被標識了這個特性,在生成的數據表中的相應的列,就會用來作樂觀檢查.數據庫

using System.ComponentModel.DataAnnotations;

public class Student
{
    public int StudentId { get; set; }
     
    [ConcurrencyCheck]
    public string StudentName { get; set; }
}

在上面的例子中,ConcurrencyCheck特性應用在Student實體的StudentName屬性上,因此EF將會在更新的時候,包含StudentName列,用於樂觀檢查,看看下面的例子:數組

using(var context = new SchoolContext()) 
{
    var std = new Student()
    {
        StudentName = "Bill"
    };

    context.Students.Add(std);
    context.SaveChanges();

    std.StudentName = "Steve";
    context.SaveChanges();
}

上面的代碼例子,將會在更新的時候,生成這樣的語句【Where條件中】:app

exec sp_executesql N'UPDATE [dbo].[Students]
SET [StudentName] = @0
WHERE (([StudentId] = @1) AND ([StudentName] = @2))
',N'@0 nvarchar(max) ,@1 int,@2 nvarchar(max) ',@0=N'Steve',@1=1,@2=N'Bill' go 

請注意:Timestamp特性只能用在單獨的byte數組屬性上,而ConcurrencyCheck特性能夠用在任何數據類型的的任何數量的屬性上面。測試

相關文章
相關標籤/搜索