2009-06-02 4 views
5

Ich möchte überprüfen, ob eine Entität bereits der Datenbank hinzugefügt wurde. Also, wie kann ich diesen Unterschied zwischen a und b sehen?C#: Wie zu sehen, ob eine Linq2SQL-Entität in der Datenbank ist

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

Um es deutlicher zu machen, wenn ich dieses:

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

Wie kann ich, wenn thing Bedarf sehen eingefügt werden?

+0

Ich fand eine verwandte Frage, die Ihnen helfen könnte: http://stackoverflow.com/questions/100068/linq-to-sql-insert-if-non-existent –

+0

Cool, wird das auch dann überprüfen! – Svish

Antwort

4

Wenn Sie FirstOrDefault anstelle von First verwenden, wird null zurückgegeben, wenn keine Übereinstimmungen vorhanden sind.

Was zu wissen, ob Sie einfügen müssen - nur daran erinnern, ob es null war, mit zu beginnen:

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

Alternativ kann, wenn es in Thing ein ID-Feld ist, die automatisch von der Datenbank gefüllt ist, können Sie kann das einfach verwenden, um zu erkennen, ob es bereits in der Datenbank ist oder nicht.

+0

+1 yep, das ist die Antwort – andy

+0

Ja, das weiß ich. Vielleicht war meine Frage nicht klar genug ... Ich werde auf meine Frage eingehen. – Svish

+0

Ist die ID immer 0, wenn nicht eingefügt? Oder ist es etwas anderes? – Svish

Verwandte Themen