entity framework:在EF(C#代码)中查看视图会返回重复的结果

我正在使用EF来查询数据库视图。 查询可以返回正确的记录数, 但所有记录都是相同的。 但是,当我在sql SSMS中运行原始查询时,一切都很好。
有人可以提供一些关于可能的根本原因的线索吗?

视图定义如下:

CREATE VIEW [dbo].[v_JobAEWeekly] AS SELECT VCId, JobRegistryId, JobNamingId, JobPrefix, DATEADD(dd, DATEDIFF(week, CONVERT(DATETIME, '2013-01-01 00:00:00', 102), JobDate) * 7 - 2, CONVERT(DATETIME, '2013-01-01 00:00:00', 102)) AS JobDateWeekSeqStartDate, COUNT(*) AS JobCounts, FROM dbo.HistoricalJobInfo WHERE (JobStateId = 2) AND (TotalYieldTimeInMinutes = 0) GROUP BY VCId, JobRegistryId, JobNamingId, JobPrefix, DATEADD(dd, DATEDIFF(week, CONVERT(DATETIME, '2013-01-01 00:00:00', 102), JobDate) * 7 - 2, CONVERT(DATETIME, '2013-01-01 00:00:00', 102)) GO 

查询如下:

 //Problem:This query will return two records but the two records are the same. var jobAEWeeklyHistory = contextDjs.v_JobAEWeekly.Where(x => x.JobRegistryId == 11 && x.JobDateWeekSeqStartDate > date).ToList(); 

反向工程代码首先实际上类似于Database First,因为它为您生成模型,映射和数据上下文。

很可能你的问题是由错误的实体密钥引起的,正如@Aducci建议的那样。 查看此问题以获取详细说明。

问题是关于主键。
EF中的每个实体都应该有一个ID,因此也就是主键。 如果源表/视图没有主键,EF将尝试注入自己。 所以问题来了,EF会将所有非可空列的组合作为密钥。 当EF在本地实现对象时,它只会选择具有相同Key的第一个对象。