从摘要视图中选择时,EF4返回不正确的值

时间:2012-03-30 11:48:04

标签: entity-framework-4

我正在使用EF4从视图中读取数据。这是一个带分组的摘要视图,并且只读 - 它没有主键。因此,为了将其导入EF4,我使用了经常建议的技巧 - 使用ISNULL(列,-11)作为视图中的第一列。这有助于EF4推断主键并导入视图。

然而,当我从EF4中的视图中选择时,发生了非常奇怪的事情 - 与直接从Management studio中的视图中选择时相比,我得到的数据不正确。我简直不敢相信,所以我尝试了几次,错误仍然存​​在。只是为了确保我在SQL Server中创建了一个表,从视图中选择all并访问EF4中的表。然后返回正确的数据!

视图不是很复杂,只是它是一个摘要视图(group by with joints),它使用SQL Common表表达式(即with子句)。

When I select straight in database using select * from vw_responserate I get 

coltext       SurveyId  rowtext1    rowtext2            cnt
Anwender    2   Angestellte/r   Französische Schweiz    1
Anwender    2   Angestellte/r   Italienische Schweiz    1
IT Spezialist   2   Angestellte/r   Deutsche Schweiz    1
IT Spezialist   2   Mittleres Management / Senior Management    Italienische Schweiz    1

When I select from EF4 I get

coltext rowtext1 rowtext2 cnt
Anwender      Angestellte/r Französische Schweiz 1
Anwender      Angestellte/r Französische Schweiz 1
IT Spezialist Angestellte/r Deutsche Schweiz 1
IT Spezialist  Angestellte/r Deutsche Schweiz 1

任何帮助将不胜感激

感谢

1 个答案:

答案 0 :(得分:14)

我遇到了同样的问题,问题是为视图定义的键不能唯一地标识单个行。

查看示例数据,应该通过将coltext,rowtext1和rowtext2设置为键来解决您的问题。

这可以通过设计师右键单击每个属性并选择“实体密钥”来完成。