컴파일 된 쿼리 및 "매개 변수는 시퀀스가 될 수 없습니다"
-
03-07-2019 - |
문제
컴파일 된 쿼리는 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);
}
해결책
이 기사 답이 있습니다 :
쿼리의 변환은 목록의 항목 수에 따라 달라 지므로 목록 매개 변수가있는 쿼리를 사전 컴파일 할 수 없습니다.
제휴하지 않습니다 StackOverflow