Domanda

Come utilizzare il metodo Ca Find<T> di Subsonic per cercare le righe con un campo che contiene il valore "null". Per il bene della discussione, supponiamo che ho ac # classe denominata "visita" che contiene un campo DateTime nullable denominato "SynchronizedOn" e anche supponiamo che la migrazione Subsonic ha creato la tabella corrispondente "Visite" e il campo "SynchronizedOn" .

Se dovessi scrivere la query SQL me stesso, vorrei scrivere qualcosa come:

SELECT * FROM Visits WHERE SynchronizedOn IS NULL

Quando uso il seguente codice:

var visits = myRepository.Find<Visit>(x => x.SynchronizedOn == null);

Subsonic lo trasforma la seguente query SQL:

SELECT * FROM Visits WHERE SynchronizedOn == null

che non restituisce mai alcuna riga.

Ho provato il seguente codice, ma genera un errore:

visits = repository.Find<Visit>(x => x.SynchronizedOn.HasValue);

Sono stato in grado di utilizzare la seguente sintassi:

var query = from v in repository.All<Visit>()
            where v.SynchronizedOn == null
            orderby v.CreatedOn
            select v;
visits = query.ToList<Visit>();

, ma non è così bello come un breve secondo il metodo Find<T>.

Qualcuno sa come posso specificare la condizione "SynchronizedOn IS NULL" nel metodo Find<T>?

È stato utile?

Soluzione

È possibile utilizzare:

var visits = myRepository.All<Visit>().Where(x => x.SynchronizedOn == null).ToList();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top