我正在使用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
任何帮助将不胜感激
感谢
答案 0 :(得分:14)
我遇到了同样的问题,问题是为视图定义的键不能唯一地标识单个行。
查看示例数据,应该通过将coltext,rowtext1和rowtext2设置为键来解决您的问题。
这可以通过设计师右键单击每个属性并选择“实体密钥”来完成。