我有一个使用EF4的ASP.NET Web应用程序。我有一个包含EntityDataSource的页面,可以从SQL Server视图中过滤记录。有一个GridView绑定到我的EntityDataSource以显示视图记录。
我在许多页面上使用过这种方法,其中与EntityDataSource关联的EntitySet链接到SQL服务器表。我现在第一次尝试使用绑定到SQL 视图的EntitySet。
EntityDataSource返回正确的行数,具体取决于where子句参数。
然而,从EntityDataSource返回的每一行完全相同。
我调试了GridView的RowDataBound事件,并确认每次绑定的每一行都有完全相同的内容。
有趣的是,当你来回翻页时,重复的记录会发生变化。我猜不知道在任何给定页面中的第一个(或最后一个)记录是重复的记录。
这感觉就像EF或EntityDataSource中的错误。有没有人见过这种行为,或者您对如何排除故障有任何建议?
答案 0 :(得分:3)
我已经看到,在从视图返回的实体的关键属性不是唯一的情况下,会发生这种情况。 EF将最终只实现单个实体,从而解决问题。
您确定标记为实体键的属性在视图中是唯一的吗?
答案 1 :(得分:1)
杰夫回答完全正确,我想说一个解决方案,该方法在模型中没有唯一的键, 也许您选择了没有唯一键的视图,然后可以像[RowNumber]这样添加唯一的列,别忘了使用[Key]属性将其添加到视图模型中,如下所示:
[Key]
public int Row { get; set; }