zoukankan      html  css  js  c++  java
  • Entity Framework Core

    并发标记(并发令牌)

      本节主要介绍如何配置并发标记。(后面在介绍保存数据时,再介绍如何处理并发冲突的示例)

      配置为并发标记的属性用于实现乐观并发控制。

      数据批注:

    using System.ComponentModel.DataAnnotations;
        public class Person
        {
            public int PersonId { get; set; }
    
            [ConcurrencyCheck]
            public string FirstName { get; set; }
    
            public string LastName { get; set; }
        }

      Fluent API:

                modelBuilder.Entity<Person>()
                    .Property(b => b.FirstName)
                    .IsConcurrencyToken();

    Timestamp/rowversion

      Timestamp/rowversion是一个属性。这个属性指示:每次插入或者更新行时,数据库会自动为其生成新值。此属性也被视为并发标记。

      作用:确保你在更新的数据行在你查询之后发生了更改后,你会得到一个异常。

      具体细节取决于所使用的数据库提供程序;对于SQL Server,通常使用byte[]属性,它将被设置为数据库中的ROWVERSION列。

      可以按如下所示将属性配置为 timestamp/rowversion:

      数据批注:

        public class Person
        {
            public int PersonId { get; set; }
    
            [ConcurrencyCheck]
            public string FirstName { get; set; }
    
            [Timestamp]
            public string LastName { get; set; }
        }

      Fluent API:

        class Team
        {
            public int TeamId { get; set; }
    
            public byte[] RecordTimestamp { get; set; }
        }
    
        class MyDbContext: DbContext
        {
            public DbSet<BlogModel> Blogs { get; set; }
            public DbSet<PostModel> Posts { get; set; }
    
            protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
                modelBuilder.Entity<Team>()
                    .Property(b => b.RecordTimestamp)
                    .IsRowVersion();
        ……
    }
  • 相关阅读:
    【转】html的meta总结
    style.left 与offsetLeft之间的区别
    VM886
    js 获取数据类型
    JS序列化URL方法
    userData 本地存储
    第一章 1.6 HTML5 的新功能(二)
    第一章 1.6 HTML5 的新功能(一)
    第一章 1.5 无插件范式
    第一章 1.4 新的认识
  • 原文地址:https://www.cnblogs.com/hiwuchong/p/14146599.html
Copyright © 2011-2022 走看看