为什么我们在Entity Framework中使用并发检查属性

时间:2014-05-25 15:47:08

标签: entity-framework-4

我是实体框架的新手。可以解释为什么我们在实体框架中使用Concurrency Check属性和example.In场景我们使用这个属性。

提前致谢..

1 个答案:

答案 0 :(得分:14)

当多个用户同时更新实体时,这是一种处理数据库更改冲突的方法。添加ConcurrencyCheck属性意味着您正在讲述 实体框架使用该属性来检测并发冲突。实体框架包括数据库UPDATEDELETE中的属性。

对于包含许多列的数据库表,这可能意味着非常大的WHERE子句,这可能会影响性能并要求您管理大量状态。对于较大的数据库,首选行版本策略。

[Table("Accounts"]
public class Account
{
    public Account() {}
    [Key]
    public int AccountID { get; set; }
    [ConcurrencyCheck]
    public string AccountName { get; set; } 
}

SQL Server将在AccountNameUPDATE中包含DELETE到数据库中:

exec sp_executesql N'UPDATE [dbo].[Accounts]
SET [AccountName] = @0
WHERE (([AccountId] = @1) AND ([AccountName] = @2))
',N'@0 nvarchar(max) ,@1 int,@2 nvarchar(max) ',@0=N'Dick',@1=1,@2=N'Harry'
go

由于并发检查,这不会向用户返回任何(零)行。