Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq得到了奇怪的结果_C#_Linq - Fatal编程技术网

C# Linq得到了奇怪的结果

C# Linq得到了奇怪的结果,c#,linq,C#,Linq,我的数据库中有以下视图 SELECT YEAR(Received) AS YEAR, MONTH(Received) AS MONTH, LEFT(DATENAME(MONTH, Received), 3) AS MMM, COUNT(Received) AS Submissions, COUNT(Quoted) AS Quotes, COUNT(Bound) AS Binders, C

我的数据库中有以下视图

SELECT  YEAR(Received) AS YEAR, 
        MONTH(Received) AS MONTH, 
        LEFT(DATENAME(MONTH, Received), 3) AS MMM, 
        COUNT(Received) AS Submissions, 
        COUNT(Quoted) AS Quotes, 
        COUNT(Bound) AS Binders, 
        COALESCE (SUM(BndPremium), 0) AS Premium, 
        ProducerID
  FROM  dbo.Quote AS Q WITH (NOLOCK)
  WHERE (Received >= DATEADD(year, - 1, GETDATE()))
  GROUP BY ProducerID, YEAR(Received), MONTH(Received), DATENAME(MONTH, Received)
我已经将视图添加到我的EDMX中。我以这种方式查询视图:

var submissions = from s in db.WSS_PortalSubmissions
                  where s.ProducerID == ID
                  select s;
然而,“意见书”中的结果是第一个月的12份,而不是过去12个月的结果。今天在Linq中运行查询,我得到了2016年4月的12份结果副本。如果我在SSMS中运行查询,我会得到预期的结果,即过去12个月的列表


我尝试过.ToList(),.ToArray(),甚至尝试过对结果进行排序,但没有改变。它只给我12份第一个月的副本。有什么原因我看不到吗?

我会更改视图,以便在没有唯一列的情况下有唯一列,并确保它映射为EF中的主键

如果这不是一个选项,请尝试将代码更改为

var submissions = from s in db.WSS_PortalSubmissions.AsNoTracking()
       where s.ProducerID == ID
       select s;

因此,EF不会跟踪实体,这将强制它只返回查询结果,而不尝试基于主键进行跟踪

我了解到EF不能很好地处理视图,因为它确实需要实体的键,而对于视图,它只会使用所有不可为null的列,这可能会导致奇怪的结果@juharr-除非您像映射表一样映射它,并指定使记录唯一的主键列。我会更改视图,以便在没有唯一列的情况下存在唯一列,并确保它映射为EF中的主键。如果这不是一个选项,请尝试将代码更改为
b.WSS\u PortalSubmissions.AsNoTracking()
,这样EF就不会跟踪实体,这将强制它只返回查询的准确结果,而不会尝试基于主键跟踪。@Igor AsNoTracking()对我来说非常适合。我已经完全忘记了EF的主要问题(已经停止练习将近一年了)。@Marc-很高兴我能帮上忙。