船长在哪里?SQL视图未返回正确的结果

船长在哪里?SQL视图未返回正确的结果,sql,views,Sql,Views,答案可能是盯着我的脸看,但我显然需要有人向我指出这一点 好的,我会尽量说得清楚简洁 我正在使用C和SQL Server 2012,并试图从SQL视图中进行选择,并将结果集作为列表返回。我得到了结果,但它们并不完全是应该的。我使用相同的SQL Server视图,使用两种不同的方法从视图中进行选择,并传递相同的参数。一个使用lambda,另一个使用SqlQuery 结果集不正确: agentEmailLicRegions = _db.vGetRegionAlerts

答案可能是盯着我的脸看,但我显然需要有人向我指出这一点

好的,我会尽量说得清楚简洁

我正在使用C和SQL Server 2012,并试图从SQL视图中进行选择,并将结果集作为列表返回。我得到了结果,但它们并不完全是应该的。我使用相同的SQL Server视图,使用两种不同的方法从视图中进行选择,并传递相同的参数。一个使用lambda,另一个使用SqlQuery

结果集不正确:

agentEmailLicRegions = _db.vGetRegionAlerts
                          .Where(x => x.region == region && x.titlealerts == true)
                          .OrderBy(o => o.Email)
                          .ToList();
执行上述调用,我在SQL Server profiler中捕捉到这一点:

我可以获取捕获查询并在SSMS中运行它,它将返回正确的结果集。但是,在代码中运行SQL调用时,返回的结果不正确。有些结果缺失,有些结果重复

下面是两个不同结果集的快照

坏结果:

良好结果:

返回正确的结果集:

agentEmailLicRegions = _db.Database.SqlQuery<vGetRegionAlert>("select * from vGetRegionAlerts where region = '" + region + "'" + " and titlealerts=1 ORDER BY EMAIL").ToList();

如果需要的话,我很乐意提供更多的信息。对我来说,关键是从lambda表达式触发的捕获的SQL查询可以在SSMS中成功执行。这让我感到困惑。

是不是_db.vGetRegionAlerts多次读取数据?检查行数…检查以确保两个查询访问的是同一台服务器。我见过这样的事情发生在一个点击Qa,一个点击Prod的时候。会不会是_db.vGetRegionAlerts多次读取数据?检查行数…检查以确保两个查询访问的是同一台服务器。我见过这样的事情发生在一个打Qa,一个打Prod的时候。