LINQ est un langage d'interrogation, donc il ne fait pas les mises à jour ou inserts. Cependant -le modèle SQL LINQ pour objet entité a des méthodes de traitement des CUD:
using(MyDataContext dc = new MyDataContext())
{
//select the source entities from Table2
var Table2Entities = (from e in dc.Table2 where e.Field1 == "value" select e);
//for each result, create a new Table1 entity and attach to Table1
Table2Entities.ForEach(t2e => dc.Table1.InsertOnSubmit(
new Table1Entity {
Field1 = t2e.Field1,
Field2 = t2e.Field2,
Field3 = t2e.Field3
});
//submit the changes
dc.SubmitChanges();
}
La vraie différence ici est qu'il nécessite deux transactionsinstead SQL séparée d'une - pour sélectionner un, et un à insérer.
Avez-vous un document? ation pour appuyer l'affirmation selon laquelle toutes les insertions ont lieu dans un aller-retour? –
@Adam non. Juste ma mémoire, qui est souvent défectueuse. Je vais retirer ce morceau jusqu'à ce qu'il soit éclairci d'une façon ou d'une autre. Merci! –
@Adam, l'outil SQL Profiler va faire la lumière sur la façon dont LINQ-to-SQL communique avec le serveur de base de données et est un bon moyen de mesurer les performances et comment LINQ construit ses requêtes et ses lots. –