我在我的数据库中创建了一个特定视图(用左连接加入大约5-6个表)。此视图添加到我的edmx(实体框架1.0)。最近我注意到,使用EDMX(LINQ到实体,然后ToList())得到重复多次,但在数据库中的观点,他们是不同的数据库视图的实体框架结果差异
Column-N (Expected result/ result from DB view)
---------
data1
data2
data3
data4
data5
Column-N(Actual result generated by entity framework)
---------
data1
data1
data1
data1
data1
我启动了我的SQL事件探查器获得的列记录之一,得到了由我的应用程序发送到SQL Server的查询,运行它,它返回了我预期的结果。
MSDN有一个类似的帖子here和here但主持人还没有详细说明如何解决这个问题。我的钥匙恰好是一个GUID
你所指出的根本原因,我认为 是正确的,问题是在 应用端EF映射,如EF与 数据库 不同对象的映射规则。当查询结果从数据库返回 时,EF 将根据自己设计的 逻辑在应用程序 上执行映射。
当您在数据库端设计您的 视图查询时,考虑这些逻辑 是很重要的。我想 认为你应该做一些调整 你的查看查询。
我不知道你是否已经整理 的问题,如果不是请提供与此相关的 问题 数据库结构和视图查询你有 写的。
感谢宾泽
有人曾经遇到过类似的问题?
你说得对。我错误地认为它是将我的GUID作为主键,直到我去看了StorageModel和概念模型。它使用一些其他列作为主键,因此也是一团糟。 通过手动更改密钥(不使用VS2008 GUI) – ram 2010-06-24 15:48:35