이전에 linq을 사용하여 데이터베이스에서 데이터를 가져 왔지만 Linq와 함께 CompiledQuery를 사용하는 것이 Linq를 단독으로 사용하는 것처럼 보입니다.어떻게 CompiledQuery를 사용할 수 있습니까?
나는 CompiledQuery를 사용하려고 시도했지만 예외가 발생합니다. 다음
내 코드입니다 :
난 그냥 테이블C_InternetCafe
에서 값 "PC_ID"와 "USER_ID"를 가져, 누구의 DataMember를
pid
및
uid
을 가지고 myDataModel에 추가 할
static readonly Func<myEntity, int?, List<myDataModel>> s_compiledQuery2 =
CompiledQuery.Compile<myEntity, int?, List<myDataModel>>
(
(ctx, NULLUserId) =>
(
from jlr in ctx.C_InternetCafe
where jlr.USER_ID != NULLUserId
select new myDataModel
{
pid = jlr.PC_ID ?? 0,
uid= jlr.USER_ID ?? 0
}
).ToList()
);
static List<myDataModel> CompiledQuery2()
{
using (myEntity context = new myEntity())
{
int? UserId = null;
List<myDataModel> orders = s_compiledQuery2.Invoke(context, UserId);
return orders;
}
}
public List<myDataModel> getCustomerInf()
{
return CompiledQuery2();
}
.
// -------------------------------------------- --------------------------------
내 과실을 용서하십시오. 다음은 예외입니다.
NotSupportedException
{
"LINQ to Entities does not recognize the method
'System.Collections.Generic.List`1
[InternetCafeManager.Web.DataModel.myDataModel]
ToList[myDataModel]
(System.Collections.Generic.IEnumerable`1
[InternetCafeManager.Web.DataModel.myDataModel])' method,
and this method cannot be translated into a store expression"
}
오류가 무엇입니까 ... 내가 수정 한 코드인가? 먼저 제안 된 것은 컴파일 된 쿼리 본문에서 ** ToList **를 제거하는 것입니다. – McGarnagle