Przekazywanie func jako parametr w Linq do Entities i błąd „Internal .NET Framework Data Provider error 1025”
Mamy klasę o nazwie Zadanie:
public partial class Task : EntityObject
{
public EntityCollection<TaskUser> TaskUsers { get {...} set{...} }
}
Posiada właściwość nawigacyjną o nazwie TaskUsers, która zawiera użytkowników dołączonych do tego zadania:
public partial class TaskUser : EntityObject
{
public User User { get {...} set { } }
}
Każdy obiekt TaskUser ma obiekt User.
Dano namIQueryable<Task> tasks
. Chcemy znaleźć zadania przypisane do użytkownika o identyfikatorze = 1. Kiedy używamy
tasks.Where(t => t.TaskUsers.Any(a => a.User.ID == 1))
wszystko dziala. Kiedy używamy
Func<TaskUser, bool> function = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.Any(function));
jesteśmy mili'Internal .NET Framework Data Provider error 1025'
błąd. Czemu? Chcę zbudować znacznie bardziej skomplikowane filtry za pomocąExpression
klasa, ale jeśli nie mogę przejść prostoFunc
, nie można tego zrobić. Co powinienem zrobić?
EDYTOWAĆ
Może
Func<TaskUser, bool> function = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.Any(function));
nie działa, ale
Expression<Func<TaskUser, bool>> expression = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.AsQueryable().Any(expression));
Prace! To wszystko, czego potrzebowałem.