一次执行多个查询

时间:2014-08-20 09:37:16

标签: sql-server database entity-framework

我使用EntityFramework来处理MS SQL数据库。

在我的数据库中,我有表users和三个表ABC包含用户数据。它们中的每一个都具有version类型的row-version列(当更新行时,数据库正在使用更大的数字更新此记录)。

用户正在向我发送他的数据版本 - 一个号码:userVersion。作为回复,我需要从version高于userVersion的这三个表中向他发送数据。我可以使用三个查询来执行此操作:

var listA = Entities.As.where(... && a.version > userVersion).toList();
// 1
var listB = Entities.Bs.where(... && b.version > userVersion).toList();
// 2
var listC = Entities.Cs.where(... && c.version > userVersion).toList();

然后我需要发送用户当前版本:

userVersion = Max(listA.Select(a => a.version).Max(),
                  listB.Select(b => b.version).Max(),
                  listC.Select(c => c.version).Max());

问题在于,当我获得listA时,可以使用较新版本的AsBs更新数据库。因此,当我listB时,listB的版本比listA的版本更新。

最后,用户将获得userVersion这么高,以至于他永远不会在" query"

中更新元素

示例(我只写version列)

  1. A = {1, 3, 6, 8},B = {2, 5, 9},C = {4, 7}userVersion=3
  2. listA = {6, 8}
  3. 现在执行来自另一个线程的另一个查询,将元素10添加到A,将11添加到B,这样B = {2, 5, 9, 11}
  4. listB = {5, 9, 11}
  5. listC = {4, 7}
  6. userVersion = 11,用户永远不会获得10的元素A
  7. 有没有办法准备这三个查询(每个列表一个),并且它们一次执行它们,所以不会进行任何更新或插入?

0 个答案:

没有答案