针对相同的Entity Framework DbSet的两个不同的LINQ查询,均返回相同的结果

汤姆·舒尔茨

假设我有:

class ContractContext : DbContext
{
    DbSet<ACTIVITY> ACTIVITYs { get; set; }
}

我有以下代码,其中startSnapshot和endSnapshot是值为1和2的整数:

var activitiesStart = contractContext.ACTIVITYs.Where(a => a.VARIANCE_SNAPSHOT_ID == startSnapshot);
var activitiesEnd = contractContext.ACTIVITYs.Where(a => a.VARIANCE_SNAPSHOT_ID == endSnapshot);

这两个查询将返回相同的结果。该结果将是所执行的两个查询中第一个查询的结果。因此,如果我强迫它们都使用ToList()执行,

var activitiesStart = contractContext.ACTIVITYs.Where(a => a.VARIANCE_SNAPSHOT_ID == startSnapshot).ToList();
var activitiesEnd = contractContext.ACTIVITYs.Where(a => a.VARIANCE_SNAPSHOT_ID == endSnapshot).ToList();

然后,存储在activityEnd中的结果将是来自activityStart查询的结果。如果我先执行activityEnd查询,则相反。这是怎么回事?我知道它们是相同的上下文,并且我想我可以看到如果我在执行两个查询之前都创建它们的话,它将如何组合查询。但是,在第二种情况下,一个在创建另一个之前就被执行了,那么为什么它会践踏第二个查询呢?

生成的SQL(两者相同):

{SELECT 
    [Extent1].[ACTIVITY_ID] AS [ACTIVITY_ID], 
    [Extent1].[ACTIVITY_NAME] AS [ACTIVITY_NAME], 
    [Extent1].[WBS_ID] AS [WBS_ID], 
    [Extent1].[VARIANCE_SNAPSHOT_ID] AS [VARIANCE_SNAPSHOT_ID], 
    [Extent1].[DUE_DATE] AS [DUE_DATE], 
    [Extent1].[IS_COMPLETE] AS [IS_COMPLETE]
FROM [p6].[ACTIVITY] AS [Extent1]
WHERE [Extent1].[VARIANCE_SNAPSHOT_ID] = @p__linq__0}

例子

var activitiesStart = contractContext.ACTIVITYs.Where(a => a.VARIANCE_SNAPSHOT_ID == 1).ToList();
var activitiesEnd = contractContext.ACTIVITYs.Where(a => a.VARIANCE_SNAPSHOT_ID == 2).ToList();

foreach (var item in activitiesStart)
{
    Debug.Write(item.VARIANCE_SNAPSHOT_ID + " ");
}

Debug.WriteLine("");

foreach (var item in activitiesEnd)
{
    Debug.Write(item.VARIANCE_SNAPSHOT_ID + " ");
}

Debug.WriteLine("");

这会打印出两行,因为先执行activityStart。如果我交换它们,我将得到两行两的。SQL Server Profiler显示查询已正确发送到服务器。

汤姆·舒尔茨

我无法弄清楚这一点。我的解决方案是在执行的第一个上使用AsNoTracking。

var activitiesStart = contractContext.ACTIVITYs.AsNoTracking.Where(a => a.VARIANCE_SNAPSHOT_ID == startSnapshot).ToList();
var activitiesEnd = contractContext.ACTIVITYs.Where(a => a.VARIANCE_SNAPSHOT_ID == endSnapshot).ToList();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何检查两个不同的LINQ查询是否具有相同结果?

来自分类Dev

两个sqlalchemy查询返回相同的结果,即使它们具有不同的过滤器

来自分类Dev

这两个查询如何返回相同的结果但使用不同的联接?(隐式查询与显式查询)

来自分类Dev

如何针对不同环境指向Entity Framework DB Context

来自分类Dev

尽管两个查询看起来具有相同的逻辑,但 Solr 查询返回不同的结果

来自分类Dev

laravel join查询为两个不同的数据返回两个相同的id

来自分类Dev

在Entity Framework / Linq中基于相同名称连接ID

来自分类Dev

为什么PHP crypt()函数针对两个不同的字符串返回相同的内容?

来自分类Dev

针对iOS 6和7的Private Framework链接(不同的类,但功能相同)

来自分类Dev

为什么我两个必须执行相同结果的不同sql查询的行为不同?

来自分类Dev

返回相同结果的两个相同NSDate的比较

来自分类Dev

是什么导致两个节点上相同的弹性搜索查询出现不同的搜索结果

来自分类Dev

相同的联接查询:通过Phalcon和phpMyAdmin获得两个不同的结果

来自分类Dev

当仅更改字段,值时,oracle为两个相同的查询产生不同的结果

来自分类Dev

Postgresql 查询对于相同的引用至少有两个不同的结果

来自分类Dev

具有相同表和连接逻辑但结果不同的两个查询

来自分类Dev

具有两个相同参数的调用方法将返回两个不同的结果

来自分类Dev

当使用两个不同的公钥时,为什么pycrypto返回相同的加密结果?

来自分类Dev

file_exists 在两个地方返回相同条件的不同结果

来自分类Dev

两个看似相同的数据库如何返回按不同列排序的结果?

来自分类Dev

如何首先在Entity Framework代码中创建2个具有相同类型的dbset?

来自分类Dev

两个相同的查询返回两个不同的值。C#.Net核心EF核心

来自分类Dev

在Django中查询相同模型时如何返回两个不同的错误消息

来自分类Dev

比较在Entity Framework 5中针对Any()与Count()生成的查询的性能

来自分类Dev

两个相同的公式产生不同的结果

来自分类Dev

编写两个不同的SharedPreference并获得相同的结果

来自分类Dev

如何模拟两个相同的mongo集合,但结果不同?

来自分类Dev

两个相同的公式产生不同的结果

来自分类Dev

MatLab:相同的功能获得两个不同的结果

Related 相关文章

  1. 1

    如何检查两个不同的LINQ查询是否具有相同结果?

  2. 2

    两个sqlalchemy查询返回相同的结果,即使它们具有不同的过滤器

  3. 3

    这两个查询如何返回相同的结果但使用不同的联接?(隐式查询与显式查询)

  4. 4

    如何针对不同环境指向Entity Framework DB Context

  5. 5

    尽管两个查询看起来具有相同的逻辑,但 Solr 查询返回不同的结果

  6. 6

    laravel join查询为两个不同的数据返回两个相同的id

  7. 7

    在Entity Framework / Linq中基于相同名称连接ID

  8. 8

    为什么PHP crypt()函数针对两个不同的字符串返回相同的内容?

  9. 9

    针对iOS 6和7的Private Framework链接(不同的类,但功能相同)

  10. 10

    为什么我两个必须执行相同结果的不同sql查询的行为不同?

  11. 11

    返回相同结果的两个相同NSDate的比较

  12. 12

    是什么导致两个节点上相同的弹性搜索查询出现不同的搜索结果

  13. 13

    相同的联接查询:通过Phalcon和phpMyAdmin获得两个不同的结果

  14. 14

    当仅更改字段,值时,oracle为两个相同的查询产生不同的结果

  15. 15

    Postgresql 查询对于相同的引用至少有两个不同的结果

  16. 16

    具有相同表和连接逻辑但结果不同的两个查询

  17. 17

    具有两个相同参数的调用方法将返回两个不同的结果

  18. 18

    当使用两个不同的公钥时,为什么pycrypto返回相同的加密结果?

  19. 19

    file_exists 在两个地方返回相同条件的不同结果

  20. 20

    两个看似相同的数据库如何返回按不同列排序的结果?

  21. 21

    如何首先在Entity Framework代码中创建2个具有相同类型的dbset?

  22. 22

    两个相同的查询返回两个不同的值。C#.Net核心EF核心

  23. 23

    在Django中查询相同模型时如何返回两个不同的错误消息

  24. 24

    比较在Entity Framework 5中针对Any()与Count()生成的查询的性能

  25. 25

    两个相同的公式产生不同的结果

  26. 26

    编写两个不同的SharedPreference并获得相同的结果

  27. 27

    如何模拟两个相同的mongo集合,但结果不同?

  28. 28

    两个相同的公式产生不同的结果

  29. 29

    MatLab:相同的功能获得两个不同的结果

热门标签

归档