2009-06-02 8 views
5

Vorrei verificare se un'entità è già stata aggiunta al database. Quindi, come posso vedere questa differenza tra a e b?C#: Come verificare se un'entità Linq2SQL è nel database

var a = dataContext.Things.First(x => x.Name == something); 
var b = new Thing { Name = something }; 

per renderlo più chiaro, se ho questo:

var thing = dataContext.Things.FirstOrDefault(x => x.Name == something) 
      ?? new Thing { Name = something }; 

Come faccio a vedere se thing esigenze da inserire?

+0

Ho trovato una domanda correlata che potrebbe aiutarti: http://stackoverflow.com/questions/100068/linq-to-sql-insert-if-non-existent –

+0

Cool, controlleremo anche tu! – Svish

risposta

4

Se si utilizza FirstOrDefault anziché First, restituirà null se non ci sono corrispondenze.

Quanto a sapere se è necessario inserire - basta ricordare se non fosse nulla di iniziare con:

var a = dataContext.Things.FirstOrDefault(x => x.Name == something); 
bool needsInsertion = (a == null); 
a = a ?? new Thing { Name = something }; 

In alternativa, se c'è un campo ID in Thing che è popolata automaticamente dal database, è può semplicemente usarlo per rilevare se è già presente nel database o no.

+0

+1 sì, questa è la risposta – andy

+0

Sì, lo so. Forse la mia domanda non è stata abbastanza chiara ... elaborerò nella mia domanda. – Svish

+0

L'ID è sempre 0 se non inserito? O è qualcos'altro? – Svish

Problemi correlati