相关疑难解决方法(0)

在不更新行版本的情况下检查实体的并发性

我有一个父实体,需要进行并发检查(如下所示)

[Timestamp]
public byte[] RowVersion { get; set; }
Run Code Online (Sandbox Code Playgroud)

我有一堆客户机进程,它们从该父实体访问只读值,并主要更新子实体

约束

  1. 客户之间不应干涉彼此的工作(例如,更新子记录不应在父实体上引发并发异常)。

  2. 我有一个确实更新父实体服务器进程,在这种情况下,如果父实体已更改,则客户端进程需要抛出。

注意:客户端的并发检查是牺牲性的,服务器的工作流程是关键任务

问题

我需要检查(从客户端进程中父实体是否已更改,而没有更新父实体的行版本

EF中父实体进行并发检查很容易:

// Update the row version's original value
_db.Entry(dbManifest)
      .Property(b => b.RowVersion)
      .OriginalValue = dbManifest.RowVersion; // the row version the client originally read

// …
Run Code Online (Sandbox Code Playgroud)

c# sql-server entity-framework database-concurrency entity-framework-6

16
推荐指数
1
解决办法
740
查看次数

在Linq to Entities中,您可以将IQueryable转换为SQL字符串吗?

例如.

var result = myObject.Where(x => x.prop == 5);

string s = result.toSQL();
Run Code Online (Sandbox Code Playgroud)

结果:

s"SELECT * FROM [myObjects] WHERE prop = 5"

linq-to-entities entity-framework

3
推荐指数
1
解决办法
8541
查看次数