2016-03-25 6 views
1

In LINQ to SQL, mein Verständnis ist, dass, wenn ich eine Sammlung von Objekten einfügen möchte ich InsertAllOnSubmit verwenden. Was ich nicht verstehe ist, wann müsste ich InsertAllOnSubmit<T> im Gegensatz zu nur InsertOnSubmit verwenden?InsertAllOnSubmit <TSubEntity> wann zu verwenden?

Was sind die Unterschiede in einem oder in Bezug auf den generischen Typparameter?

Von LINQ Definition

public void InsertAllOnSubmit<TSubEntity>(IEnumerable<TSubEntity> entities) 
    where TSubEntity : TEntity; 

wie folgt aus:

db.SlickTableEntries.InsertAllOnSubmit<SlickTableEntry>(entries); 
db.SubmitChanges(); 

vs. es wie folgt aus:

db.SlickTableEntries.InsertAllOnSubmit(entries); 
db.SubmitChanges(); 

Einträge ist ein List<SlickTableEntry>.

Wie soll ich das richtig benutzen? Welche Version ist besser?

+0

Es ist bequemer, 'InsertAllOnSubmit' zu verwenden, wenn sich mehrere Entitäten bereits in einer Liste befinden –

Antwort

1

Dies ist eine bequeme Methode, mit der Sie mehrere Entitäten in einem Aufruf einfügen können. Dies erspart Ihnen die foreach Schleife. Es ändert nicht die Art, wie auf die Datenbank zugegriffen wird, aber es ist möglicherweise weniger CPU-effizient nach dem dekompilierten Code (kleiner Effekt).

Der generische Typparameter existiert, damit Sie einen abgeleiteten Typ übergeben können, wenn Ihre Entitäten in einer Vererbungsbeziehung sind. Beginnend mit der C# -Kovarianzunterstützung wird dies nicht mehr benötigt.

Welcher sollte in welcher Situation verwendet werden?

Wenn Sie eine Liste von Entitäten haben, verwenden Sie die Listenversion. Andernfalls verwenden Sie die Einzelartikelversion. Geben Sie das Argument des generischen Typs nicht an. Es wird nie benötigt und nur den Code verstopft.

Es gibt keinerlei funktionelle Unterschiede. Wenn es kompiliert, funktioniert es. Lassen Sie das Argument type einfach weg und der Compiler füllt es passend aus.

Verwandte Themen