Entity framework 4 为什么在实体框架中使用并发检查属性

Entity framework 4 为什么在实体框架中使用并发检查属性,entity-framework-4,Entity Framework 4,我是实体框架的新手。有人能解释一下为什么我们在实体框架中使用并发检查属性吗 提前感谢。当多个用户同时更新实体时,这是一种处理数据库更改冲突的方法。添加ConcurrencyCheck属性意味着您正在告诉 实体框架使用该属性检测并发冲突。实体框架在数据库的UPDATEs或DELETEs中包含属性 对于具有许多列的数据库表,这可能意味着非常大的WHERE子句,这可能会影响性能并需要管理大量状态。对于较大的数据库,首选行版本策略 [表(“账户”] 公共类帐户 { 公共帐户(){} [关键] publi

我是实体框架的新手。有人能解释一下为什么我们在实体框架中使用并发检查属性吗


提前感谢。

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

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

[表(“账户”]
公共类帐户
{
公共帐户(){}
[关键]
public int AccountID{get;set;}
[并发检查]
公共字符串AccountName{get;set;}
}
SQL Server将在
UPDATE
s或
DELETE
s中将
AccountName
包含到数据库中:

exec sp_executesql N'UPDATE[dbo].[Accounts]
设置[AccountName]=@0
其中(([AccountId]=@1)和([AccountName]=@2))
,N'@0 nvarchar(max),@1 int,@2 nvarchar(max),@0=N'Dick',@1=1,@2=N'Harry'
去

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

我们在EDMX设计器中为实体对应的列设置的
并发模式
属性如何?此属性是否为
[ConcurrencyCheck]
在您的实体中满足相同的目的?
并发模式
属性还用于处理实体框架中的字段级并发错误。没错!where子句将更新以反映列,如果不同,将抛出DbUpdateConcurrencyException。源代码中的ConcurrencyMode是一个enum.namespace System.Data.Entity.Core.Metadata.Edm{public enum ConcurrencyMode{None,Fixed,}