문제

컴파일 된 쿼리는 datacontext와 동일한 쿼리 변환을 수행 할 것이라고 생각했습니다. 그러나 .crontains 메소드 호출과 함께 쿼리를 사용하려고 할 때 런타임 오류가 발생합니다. 내가 어디로 잘못 갔습니까?

//private member which holds a compiled query.
Func<DataAccess.DataClasses1DataContext, List<int>, List<DataAccess.TestRecord>>
  compiledFiftyRecordQuery = System.Data.Linq.CompiledQuery.Compile
  <DataAccess.DataClasses1DataContext, List<int>, 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);         
}
도움이 되었습니까?

해결책

이 기사 답이 있습니다 :

쿼리의 변환은 목록의 항목 수에 따라 달라 지므로 목록 매개 변수가있는 쿼리를 사전 컴파일 할 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top