【问题标题】:InvalidOperationException: type 'System.String' referenced from scope '', but it is not definedInvalidOperationException:从范围“”引用的类型“System.String”,但未定义
【发布时间】:2017-04-05 07:49:24
【问题描述】:

我升级到 Core 1.1 和 Visual Studio 2017。我正在运行一个简单的现有代码行来搜索用户输入字符串的列,但得到错误...

InvalidOperationException:类型的变量“__searchTerm_1” 'System.String' 从范围 '' 中引用,但未定义

简而言之,我的代码是:

public IQueryable<SearchViewModel> ActivitySearch(string searchTerm)
{
    var qry = (from act in context.Acts
                  .Include(x => x.ActivityExt)
               select new SearchViewModel()
               {
                   AMCNnumber = act.AMCNnumber
                   ActivityId = act.ActivityID,
                   ImplementingPartner = act.ActivityExt.imp,
                   ProjectTitle = act.Name,
                   Description = act.Description,
                   StartDate = act.StartDate,
                   EndDate = act.EndDate
               });

     if (!String.IsNullOrEmpty(searchTerm))
     {
         qry = qry.Where(x => x.AMCNnumber.Contains(searchTerm);
     } 

     return qry.ToArray();
}

【问题讨论】:

  • 添加了更多代码。这个搜索已经工作了一段时间,但随着使用 .Contains 进入 Core 1.1,似乎发生了一些变化。
  • 我的立场已得到纠正,EF Core 似乎支持投影到非匿名、非实体类型。
  • AMCNnumber 属性的类型是什么?
  • 看起来像一个错误,但是如果将searchTerm 移动到局部变量中,您有解决方法吗?

标签: c# linq asp.net-core asp.net-core-mvc entity-framework-core


【解决方案1】:

原来是我的一个子查询导致了这个错误。我必须创建单独的变量来获取 ID。

【讨论】:

    猜你喜欢
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    相关资源
    最近更新 更多