Subsónica 3, SimpleRepository, SQL Server: ¿Cómo encontrar filas con un campo nulo?
-
12-09-2019 - |
Pregunta
Cómo CA utilizo el método de Find<T>
subsónico para buscar filas con un campo que contiene el valor "nulo". Por el bien de la discusión, vamos a suponer que tengo clase de C # llamado "Visita", que contiene un campo DateTime anulable llamado "SynchronizedOn", y también vamos a suponer que la migración subsónico ha creado la correspondiente tabla de "Visitas" y el campo "SynchronizedOn" .
Si tuviera que escribir la consulta SQL a mí mismo, me gustaría escribir algo como:
SELECT * FROM Visits WHERE SynchronizedOn IS NULL
Cuando uso el siguiente código:
var visits = myRepository.Find<Visit>(x => x.SynchronizedOn == null);
subsónico convierte en la siguiente consulta SQL:
SELECT * FROM Visits WHERE SynchronizedOn == null
que nunca se vuelve ninguna fila.
He probado el siguiente código pero genera un error:
visits = repository.Find<Visit>(x => x.SynchronizedOn.HasValue);
yo era capaz de utilizar la siguiente sintaxis:
var query = from v in repository.All<Visit>()
where v.SynchronizedOn == null
orderby v.CreatedOn
select v;
visits = query.ToList<Visit>();
pero no es tan bonito como un corto utilizando el método Find<T>
.
Alguien sabe cómo puedo especificar la condición "SynchronizedOn IS NULL" en el método Find<T>
?
Solución
Puede utilizar:
var visits = myRepository.All<Visit>().Where(x => x.SynchronizedOn == null).ToList();