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

Rah*_*Rai 11 entity-framework-4

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

提前致谢..

Law*_*Law 15

当多个用户同时更新实体时,它是一种处理数据库更改冲突的方法.添加ConcurrencyCheck属性意味着您告诉实体框架使用该属性来检测并发冲突.实体框架包括数据库中UPDATEs或DELETEs 的属性.

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

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

SQL Server将包含AccountNameUPDATEs或DELETEs中的数据库中:

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
Run Code Online (Sandbox Code Playgroud)

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