微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linq-to-sql – 编译的查询和“参数不能是序列”

我认为编译的查询将执行与DataContext相同的查询转换.但是当我尝试使用带有.Contains方法调用查询时,我遇到了运行时错误.我哪里出错了?
//private member which holds a compiled query.
Func<DataAccess.DataClasses1DataContext,List<int>,List<DataAccess.TestRecord>>
  compiledFiftyRecordQuery = System.Data.Linq.CompiledQuery.Compile
  <DataAccess.DataClasses1DataContext,List<DataAccess.TestRecord>>
  ((dc,ids) => dc.TestRecords.Where(tr => ids.Contains(tr.ID)).ToList());

//this method calls the compiled query.
public void FiftyRecordCompiledQueryByID()
{
  List<int> IDs = GetRandomInts(50);

  //System.NotSupportedException
  //{"Parameters cannot be sequences."}

  List<DataAccess.TestRecord> results = compiledFiftyRecordQuery
    (myContext,IDs);         
}

解决方法

This article有你的答案:

Queries with list parameters cannot be precompiled because the translation of the query is dependent on the number of items in the list.

原文地址:https://www.jb51.cc/mssql/76974.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐