Al usar este código en Entity Framework , recibo el siguiente error. Necesito obtener todas las filas para una fecha específica, DateTimeStartes de tipo DataType en este formato2013-01-30 12:00:00.000
Código:
 var eventsCustom = eventCustomRepository.FindAllEventsCustomByUniqueStudentReference(userDevice.UniqueStudentReference)
                    .Where(x =>  x.DateTimeStart.Date == currentDateTime.Date);
Error:
base {System.SystemException} = {"El miembro de tipo especificado 'Fecha' no es compatible en LINQ to Entities. Solo se admiten inicializadores, miembros de entidad y propiedades de navegación de entidad."}
¿Alguna idea para solucionarlo?

Respuestas:
DateTime.Dateno se puede convertir a SQL. Utilice el método EntityFunctions.TruncateTime para obtener la parte de la fecha.ACTUALIZACIÓN: Como @shankbond mencionó en los comentarios, en Entity Framework 6
EntityFunctionsestá obsoleto, y debe usar laDbFunctionsclase, que se envía con Entity Framework.fuente
Ahora deberías usar
DbFunctions.TruncateTimefuente
Me gustaría agregar una solución que me haya ayudado a resolver este problema en el marco de la entidad:
Espero que ayude.
fuente
EntityFunctionses obsoleto. Considere usar en suDbFunctionslugar.fuente
Utilice siempre EntityFunctions.TruncateTime () para x.DateTimeStart y currentDate. como :
fuente
Solo usa propiedades simples.
Si las fechas futuras no son posibles en su aplicación, entonces > = x.DateTimeStart> = currentDateTime.Date es suficiente.
si tiene comparaciones de fechas más complejas, verifique las funciones canónicas y si tiene funciones EF6 + DB
Más en general: para las personas que buscan problemas Los métodos de Linq admitidos en EF pueden explicar problemas similares con sentencias de linq que funcionan en Listas de base de memoria pero no en EF.
fuente
Simplificado:
fuente
Use el siguiente código para usar EF6:
fuente
Otra solución podría ser:
fuente