2011-12-15 74 views
1

我有一个使用EF4的ASP.NET Web应用程序。我有一个EntityDataSource页面,可以从SQL Server视图中过滤记录。有一个GridView绑定到我的EntityDataSource来显示视图记录。EntityDataSource重复第一条记录而不是返回不同的记录?

我在很多页面上都使用了这种方法,其中与EntityDataSource关联的EntitySet链接到SQL服务器。我现在第一次尝试使用绑定到SQL 视图的EntitySet。

根据where子句参数,EntityDataSource返回正确的行数。

但是,从EntityDataSource返回的每一行都是完全一样的。

我已经调试了GridView的RowDataBound事件,并确认绑定的每一行每次都有完全相同的内容。

有趣的是,当你来回翻页时,重复的记录会改变。我猜不管怎么说,任何给定页面中的第一个(或最后一个?)记录都是重复的记录。

这感觉就像EF或EntityDataSource中的错误。有没有人看到过这种行为,或者你有任何关于如何排除故障的建议?

回答

3

我发现在其他场景中发生这种情况时,从视图返回的实体的关键属性不是唯一的。英孚最终只会实现一个单一的实体,从而出现问题。

确定标记为实体键的属性在视图中是唯一的吗?

+0

哇。事实证明,我的观点 - 这是专为报告而设计 - 没有一个简洁的唯一键定义。每一行都是独一无二的,但您需要查看整行以确保这一点。 edmx画布围绕应该是独一无二的东西做了一些“简化假设”。有意义的是,ORM需要对这类事情挑剔。如果能够足够聪明地看到视图不可更新,然后对构成新实体的构成做出更明智的假设,那将是非常好的。非常感谢这个解决方案! – 2011-12-15 20:19:42

相关问题