2009-06-02 6 views
5

Chciałbym sprawdzić, czy jednostka jest już dodana do bazy danych. Jak mogę zobaczyć różnicę między a i b?C#: Jak sprawdzić, czy jednostka Linq2SQL znajduje się w bazie danych

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

Aby uczynić go bardziej zrozumiałym, jeśli mam to:

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

Jak mogę sprawdzić, czy thing musi być włożona?

+0

Znalazłem pokrewne pytanie, które może ci pomóc: http://stackoverflow.com/questions/100068/linq-to-sql-insert-if-non-istentent –

+0

Cool, sprawdzi to również wtedy! – Svish

Odpowiedz

4

Jeśli użyjesz FirstOrDefault zamiast First, to zwróci null, jeśli nie ma dopasowań.

chodzi o wiedząc, czy trzeba włożyć - pamiętaj tylko, czy to była zerowa zacząć:

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

Alternatywnie, jeśli istnieje pole ID w Thing które są wypełniane automatycznie przez bazę danych, ty może użyć tego do wykrycia, czy jest już w bazie danych, czy nie.

+0

+1 tak, to jest odpowiedź – andy

+0

Tak, wiem. Może moje pytanie nie było wystarczająco jasne ... Rozwiążę pytanie. – Svish

+0

Czy identyfikator ma zawsze wartość 0, jeśli nie został wstawiony? A może to coś innego? – Svish

Powiązane problemy