我对Entity Framework(4)有点新鲜。我一直在追踪我们软件中的一个错误,我已经把它钉在了下面的怪癖中。我很好奇是否有人可以帮我解释为什么这两个Counts(dataCount和data2Count)会根据我调用它们的方式而有所不同。 data2Count是正确的,实际上与我在SQL中的内容相匹配。
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
}
感谢。
答案 0 :(得分:1)
好吧,我想我发现并修复了发生的事情 - 虽然我不确定我能否在内部解释EF如何处理它......我在这里发现了一篇文章:Entity framework result discrepancy for a database views听起来像是一个类似的问题。我在SQL中的数据有几个记录,其字段大致相同。唯一的区别是TestType。但它没有被标记为关键的一部分。简单地扩展键以包含此字段会导致Counts正确匹配。
答案 1 :(得分:0)
如何设置parentId?它是在这个代码片段运行的循环之外声明的变量吗?如果是这样,由于关闭问题,这可能会起到时髦的作用。 This other question为您提供了有关如何解决关闭问题的大量信息。