Sql 实体框架计数差异
我对实体框架(4)有些陌生。我一直在追踪我们软件中的一个bug,我已经把它锁定在了follow怪癖中。我很好奇是否有人能帮我解释为什么这两个计数(dataCount和data2Count)会因我调用它们的方式不同而有所不同。data2Count是正确的,并且实际上与我在SQL中拥有的匹配Sql 实体框架计数差异,sql,entity-framework,c#-4.0,entity-framework-4,Sql,Entity Framework,C# 4.0,Entity Framework 4,我对实体框架(4)有些陌生。我一直在追踪我们软件中的一个bug,我已经把它锁定在了follow怪癖中。我很好奇是否有人能帮我解释为什么这两个计数(dataCount和data2Count)会因我调用它们的方式不同而有所不同。data2Count是正确的,并且实际上与我在SQL中拥有的匹配 using (var context = new Entities(ConnectionString)) { var startDateTime = Da
using (var context = new Entities(ConnectionString))
{
var startDateTime = DateTime.Parse("10/1/2011");
var endDateTime = DateTime.Parse("12/31/2011 23:59");
var query = from data in context.vDATA
where data.ParentId == parentId &&
data.TimeStamp >= startDateTime &&
data.TimeStamp <= endDateTime
select data;
var data = query.ToList();
var dataCount = data.Where(x => x.TestType == 20).Count();
//dataCount is 162
var data2 = query.Where(x => x.TestType == 20);
var data2Count = data2.Count();
//data2Count is 198
}
使用(var上下文=新实体(ConnectionString))
{
var startDateTime=DateTime.Parse(“2011年1月10日”);
var endDateTime=DateTime.Parse(“12/31/2011 23:59”);
var query=来自context.vDATA中的数据
其中data.ParentId==ParentId&&
data.TimeStamp>=startDateTime&&
data.TimeStamp x.TestType==20.Count();
//数据计数是162
var data2=query.Where(x=>x.TestType==20);
var data2Count=data2.Count();
//数据2计数为198
}
谢谢。如何设置parentId?它是在运行此代码片段的循环之外声明的变量吗?如果是这样的话,这可能会因为关闭问题而显得有些古怪。为您提供了大量有关如何解决关闭问题的信息。好吧,我想我已经找到并修复了发生的情况-尽管我不确定我能否在内部解释EF如何处理它。。。我在这里找到一篇文章:这听起来像是一个类似的问题。我在SQL中的数据有几个字段大致相同的记录。唯一有区别的字段是TestType。但它没有被标记为钥匙的一部分。只需扩展键以包含此字段,即可使计数正确匹配。TestType列的类型是什么?它是一个可为空的整数。感谢您的反馈。这是一个伟大的想法;但是,我可以使用一个常量值(例如data.ParentId==129),并且仍然得到相同的结果。而且,没有循环,所以我不认为闭包是个问题。