C#Entity LINQ返回错误和重复的值

我使用以下代码:

List Imeasurements = context.vw_GetIMeasurements.Where(f => f.MEMBERID == userID).Distinct().ToList(); 

这会返回一个包含12个值的列表,但它们应该是相同的(尽管它们不在数据库中。(即使它们是不同的,也应该解决这个问题)

视觉问题

D B :

数据库图像

返回的原始值也是错误的。 这个问题的原因是什么,我该如何解决?

我之前遇到过这个问题 – 事实certificate该视图没有设置唯一的entity keys – 确保entity framework自动创建的视图的主键确实是唯一的…

我有一个类似的问题 – 数据库视图在SQL服务器中看起来很好,但在调试时,重复的行出现在行共享特定属性值的位置。

我发现其中一个重要的唯一键来自外连接表 – 因此有可能为空 – 并且模型没有分配为唯一。

我能够通过将此字段设置为ISNULL(字段,”)来解决此问题 – 确保始终返回值 – 并且在更新时,模型正确地将字段解释为唯一且作为复合键和行的一部分正确返回。

我知道有人可能认为视图设计有问题(即我不应该使用外连接),但在这种情况下,特别需要外连接。 修复工作正常,因为复合键仍然是唯一的,即使多次返回“”。

也许尝试这样一个更简单的语法

 var measure = from f in context.vw_GetIMeasurements where f.MEMBERID == userID select f; 

这种事对我有用..

这个问题实际上是理查德所描述的。 但是我无法选择正确的“唯一密钥”,因此这会导致更多问题。

我通过创建一个自定义类并在SQL中创建它来解决我的问题。 我还将我的Select限制为3列中的2列。

 List result = (from f in context.vw_GetIMeasurements where f.MEMBERID == userID select new Measurement { Category = f.atcmCATEGORYCODEID, Size = f.imMeasurementNumber }).ToList(); 

在自制级别的情况下进行测量。