2
나는 여러번 반복되는 쿼리에 대해 컴파일 된 쿼리를 사용하여 응용 프로그램의 속도를 높이고있었습니다. 컴파일 된 쿼리에서 목록을 반환 할 수없는 이유는 무엇입니까?
나는 이런 식으로 구현하려고 :Function Select(ByVal fk_id As Integer) As List(SomeEntity)
Using db As New DataContext()
db.ObjectTrackingEnabled = False
Return CompiledSelect(db, fk_id)
End Using
End Function
Shared CompiledSelect As Func(Of DataContext, Integer, List(Of SomeEntity)) = _
CompiledQuery.Compile(Function(db As DataContext, fk_id As Integer) _
(From u In db.SomeEntities _
Where u.SomeLinkedEntity.ID = fk_id _
Select u).ToList())
이
작동하지 않았다 나는이 오류 메시지가 있어요 : 내가 대신 된 IQueryable를 반환하는 내 컴파일 된 쿼리를 변경할 때Type : System.ArgumentNullException, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Message : Value cannot be null.
Parameter name: value
을, 목록은 이렇게 :
Function Select(ByVal fk_id As Integer) As List(SomeEntity)
Using db As New DataContext()
db.ObjectTrackingEnabled = False
Return CompiledSelect(db, fk_id).ToList()
End Using
End Function
Shared CompiledSelect As Func(Of DataContext, Integer, IQueryable(Of SomeEntity)) = _
CompiledQuery.Compile(Function(db As DataContext, fk_id As Integer) _
From u In db.SomeEntities _
Where u.SomeLinkedEntity.ID = fk_id _
Select u)
괜찮 았어. 왜 이것이 빛인지 밝힐 수 있습니까?
댓글이 게시되었습니다. 그들은 List
을 반환 컴파일 된 쿼리, 반면 IQueryable
게으른로드 할 수 있습니다 반환 컴파일 된 쿼리가 평가되는 쿼리를 강제하기 때문에이 될 수있다, 추측 2.