【问题标题】:LINQ to SQL query has wrong values in resultsLINQ to SQL 查询在结果中有错误的值
【发布时间】:2012-02-23 15:19:11
【问题描述】:

我有一个结果不正确的 LINQ 查询,但是当我分析生成的 SQL 时,SQL 结果是正确的。

ApplicationsEntities context = new ApplicationsEntities();
var query = from documentation in context.Documnetations
            where documentation.Application_Version_ID == app_ver_id
            orderby documentation.Name
            select documentation;
docs = query.ToList<Documnetation>();

我得到了两个重复:“如何安装 Office 2003”和“如何安装 Office 2003”

以下是分析 SQL 的输出:

生成的 SQL 的结果分配会发生什么情况?

【问题讨论】:

  • 看起来像是一项未记录的 Microsoft 功能,可防止人们卸载他们的产品。严重:ToList() 之后的结果还是一样吗?也许手表被多次执行底层查询搞砸了?
  • 是的,toList() 的结果不正确。甚至原始结果的值也不正确。

标签: c# entity-framework linq-to-sql entity-framework-4 linq-to-entities


【解决方案1】:

基于 cmets 更新

您的 linq 查询很好,但在您的模型中,您必须设置主键/实体键

Linq-to-Sql

在您的dbml 中,您需要将主键从Application_Version_ID 更改为Documentation_Id

Linq-to-Entities

在您的model 中,您需要将您的实体密钥从Application_Version_ID 更改为Documentation_Id

【讨论】:

  • 我不知道文档 id,只知道应用程序 version_id。生成的 sql 检索到正确的结果。
  • @DaveHarding - 您的 linq 查询很好,但在您的模型中,您必须设置主键/实体键
  • 就是这样。你想发布一个正式的答案,我会接受吗?非常感谢你。我已经打了好几个小时!
  • @DaveHarding - 我很高兴能帮上忙
【解决方案2】:

当一个或多个表格结构发生更改时,就会发生这种情况

删除您的表格并在您的EDM重新生成它们。 (实体数据模型)

右键,Update Model from Database...Add...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 2011-09-23
    相关资源
    最近更新 更多