2014-02-28 26 views
0

不同我有一个LINQ查询,简单地从已经存在我们的SQL Server的视图对结果进行过滤。我遇到的问题是来自LINQ查询的结果与SQL服务器上的结果不同。LINQ结果,从SQL Server视图

首先我创建通过VS.向导中的EF连接我的一个基本的创建上下文:

using(Entities context = new Entities()) 
      { 

然后LINQ查询很简单:

var Active = context.vwUniqueParts 
.Where(a => a.HasOrders == true) 
.ToList(); 

的问题是,我得到的返回的数据重复的结果:

在那里我会期望看到:第一部分 ,第2部分,第三部分,第四部分,第5部分,第6部分,第7部分,第8部分,Part9

我反而得到:第一部分 ,第2部分,第2部分,帕t2时,第2部分,第6部分,第6部分,第6部分,Part9

当查看结果某些结果将被重复,然后,同时它停止重复之后。当它停止重复显示的部分对于它在数据集中的位置是正确的。

+1

你能告诉我们你的UniqueParts视图,你就用手运行得到正确的结果SQL查询?此外,您可以看到生成的SQL查询使用的toString像'context.vwUniqueParts.Where(A => a.HasOrders == true),使cmpare的ToString()'...可能你指出正确的方向 –

回答

2

这听起来好像模型上的主键不匹配数据库。如果它们不同,你会发现结果集将返回奇怪的结果,如你在这里看到的。

+0

这不是**答案**。您应该将其作为**评论**发布。 –

+0

对不起,对,你是对的。我会编辑它。 – user3358344

+0

我认为它确实与SQL主键有关 - 它是一个生成的RowID,并且似乎没有生成唯一键。我最终使用了不同的查询,因为我花费了太多的时间来调试小程序。我不确定解决方案是否能够正常工作,但是这个答案帮助我使程序正常工作,所以我接受它作为答案。 –