Lis*_*isa 4 c# sql linq sql-server linq-to-entities
我在数据库中定义了一个视图(archiveContentPreviews),它将多个表连接在一起,在Linq中,它具有一个实体键(ArchiveID),我想使用以下简单查询来查询该视图:
var x = from fields in entities2.archiveContentPreviews
where fields.ArchiveID == archiveID
select fields;
return x.ToList<archiveContentPreview>();
Run Code Online (Sandbox Code Playgroud)
问题是它返回准确的结果数,但返回第一个结果的多个副本,而当我在SQL Management Studio中执行该查询时,它返回正确的结果,有帮助吗?
当指定为主键的一列(或多列)在视图中没有唯一值时,通常会发生这种情况。在您的情况下,ArchiveID可能会在大量视图行中重复(这也由您的where子句指示)。您将必须找到(或添加到视图中)唯一标识一个视图行并将其标记为EF模型中的主键的列组合。
请注意,由生成的SQL查询返回的数据可能包含具有不同值(但相同ArchiveID)的行,但是EF只是为每个物化实体对象,ArchiveID并为其找到该ID的第一个结果。
| 归档时间: |
|
| 查看次数: |
2282 次 |
| 最近记录: |