EF并发与模型第一种方法时间戳属性处理(EF Concurrency Handling with T

2019-06-24 15:17发布

我想实现中给出的解决方案中的ASP.NET MVC应用程序处理与实体框架并发 。

文章说:

添加跟踪物业部门实体

在模型\ Department.cs,添加跟踪特性:

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

时间戳属性指定此列将包括更新的WHERE子句中和删除发送到数据库的命令。

由于我使用的模型第一种方法,我也跟着步骤1 - 5中所列创建与实体框架时间戳列

  1. 一个名为“时间戳”属性添加到实体EF模型
  2. 设置类型为二进制
  3. 可空设置为false
  4. 设置StoreGeneratedPattern式来计算
  5. 设置ConcurrencyMode固定

当我从更新数据库模型我的代码,该机型\ Department.cs现在包含

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

然后,我使用的元数据类指定时间戳属性:

// Metadata for Department entity
public class DepartmentMetadata
{
    [Timestamp]
    public byte Timestamp { get; set; }
}

Q1。 我测试是否值Timestamp列在列的编辑的情况下,正在发生变化。 事实并非如此。

编辑1的问题,因为SQL Server列类型是引起了binary ,它应该是类型的timestamp 。 更改固定不会得到更新时间戳列问题的数据类型。

Q2。 我试图修改同一个实体(使用“打开新的标签页”)以查看是否有OptimisticConcurrencyException被抛出。 事实并非如此。 我究竟做错了什么? 请帮我明白了,谢谢。

Answer 1:

因为我每次HTTP会话一个ObjectContext的,所以打开一个新标签,并测试它不会导致并发异常的问题引起的。



文章来源: EF Concurrency Handling with Timestamp attribute in Model First approach