【问题标题】:Strange Exception thrown using Dynamic Linq Entity Framework Query使用动态 Linq 实体框架查询引发的奇怪异常
【发布时间】:2009-07-24 22:27:48
【问题描述】:

我有一个画廊实体框架类,我正在尝试使用 ScottGu 博客上发布的动态 Linq 库来查询实体集。 失败的代码行如下:

return context.Galleries.OrderBy(sidx + " " + sord).Skip(page * rows).Take(rows).ToList();

sidx=="Name" 和 sord=="desc"。

Gallery 对象确实有一个名为“Name”的属性。但是,当执行时,我得到以下异常:

在当前范围或上下文中无法解析“标题”。确保所有引用的变量都在范围内,加载了所需的架构,并且正确引用了命名空间。在简单标识符附近,第 6 行,第 1 列。

有人知道这是什么意思吗?

【问题讨论】:

  • 错误在其他地方,可能在查询中。您包含的代码行只是执行查询的行(因为 ToList)。您在那里看到错误表面,但真正的错误在其他地方。我的第一个猜测是映射,但这里没有足够的代码来说明。

标签: linq entity-framework dynamic-linq


【解决方案1】:

“it”别名是问题所在,所以下面的代码应该可以工作:

将您的过滤器字段名称Title前缀为it.Title

我在这里找到了答案.. http://challenge-me.ws/?tag=/Exceptions

【讨论】:

  • 与 OP 有相同的消息,这就是修复。
  • 噢!正在寻找 2 天的修复。谢谢!
【解决方案2】:

使用:AsQueryable

return context.Galleries.AsQueryable().OrderBy(sidx + " " + sord).Skip(page * rows).Take(rows).ToList();

【讨论】:

    【解决方案3】:

    我找到了一个修复程序,但它没有解释原始问题。该查询位于库中,并从 asp.net mvc 应用程序中引用。它编译得很好,但在运行时被轰炸了。 修复方法是将 dynamiclinq 类放在 mvc 应用程序本身中,从库中返回一个普通的 IQueryable,并在控制器本身中进行过滤。完全相同的代码在那里工作。不知何故,图书馆中的分离导致了这个问题。

    【讨论】:

      猜你喜欢
      • 2016-05-11
      • 2021-12-16
      • 2011-08-19
      • 1970-01-01
      • 2015-09-07
      • 1970-01-01
      • 2014-07-05
      • 2021-12-25
      • 1970-01-01
      相关资源
      最近更新 更多