2009-06-02 7 views
5

Je voudrais vérifier si une entité est déjà ajoutée à la base de données. Alors, comment puis-je voir cette différence entre a et b?C#: Comment voir si une entité Linq2SQL est dans la base de données

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

Pour le rendre plus clair, si j'ai ceci:

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

Comment puis-je savoir si thing doit être inséré?

+0

J'ai trouvé une question connexe qui pourrait vous aider: http://stackoverflow.com/questions/100068/linq-to-sql-insert-if-non-existent –

+0

Cool, va vérifier cela aussi bien alors! – Svish

Répondre

4

Si vous utilisez FirstOrDefault au lieu de First, cela renverra null s'il n'y a pas de correspondance.

Quant à savoir si vous devez insérer - rappelez-vous si oui ou non il était nul pour commencer:

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

Sinon, s'il y a un champ d'identification dans Thing qui est automatiquement renseigné par la base de données, vous peut simplement utiliser cela pour détecter si elle est déjà dans la base de données ou non.

+0

+1 oui, c'est la réponse – andy

+0

Oui, que je sais. Peut-être que ma question n'était pas assez claire ... Je vais développer dans ma question. – Svish

+0

L'ID est-il toujours 0 s'il n'est pas inséré? Ou s'agit-il d'autre chose? – Svish

Questions connexes