Pasando func como parámetro en Linq a entidades y error '1025' del proveedor de datos de .NET Framework interno
Tenemos una clase llamada Tarea:
public partial class Task : EntityObject
{
public EntityCollection<TaskUser> TaskUsers { get {...} set{...} }
}
Tiene una propiedad de navegación llamada TaskUsers, que contiene usuarios adjuntos a este taks:
public partial class TaskUser : EntityObject
{
public User User { get {...} set { } }
}
Cada objeto TaskUser tiene un objeto User.
Se nos daIQueryable<Task> tasks
. Queremos encontrar tareas asignadas al usuario con ID = 1. Cuando usamos
tasks.Where(t => t.TaskUsers.Any(a => a.User.ID == 1))
todo funciona bien Cuando usamos
Func<TaskUser, bool> function = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.Any(function));
nos ponemos bien'Internal .NET Framework Data Provider error 1025'
error. ¿Por qué? Quiero construir filtros mucho más complicados usandoExpression
Clase, pero si no puedo pasar lo sencillo.Func
, esto no se puede hacer. ¿Qué tengo que hacer?
EDITAR
Tal vez
Func<TaskUser, bool> function = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.Any(function));
no funciona, pero
Expression<Func<TaskUser, bool>> expression = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.AsQueryable().Any(expression));
¡trabajos! Eso es todo lo que necesitaba.