Maison >base de données >tutoriel mysql >LINQ peut-il effectuer des mises à jour SQL directes sans instructions Select ?

LINQ peut-il effectuer des mises à jour SQL directes sans instructions Select ?

DDD
DDDoriginal
2024-12-20 10:31:10873parcourir

Can LINQ Perform Direct SQL Updates Without Select Statements?

Mises à jour directes avec LINQ : contourner les instructions Select

Lorsque vous travaillez avec SQL, des mises à jour directes sans instructions select peuvent être créées à l'aide de conditions. Avec LINQ, le modèle courant consiste à sélectionner des entités, à les modifier et à soumettre les modifications.

Cependant, que se passe-t-il si vous souhaitez exécuter des mises à jour directes à l'aide de LINQ et différer l'exécution ? Est-il possible d'éviter de transmettre des données au client et de faire exécuter directement le SQL ?

La réponse est oui. LINQ-to-SQL peut générer des instructions de mise à jour sans avoir besoin d'une instruction select. Ceci peut être réalisé en attachant un objet avec des valeurs clés au contexte et en modifiant ses propriétés.

Par exemple :

Foo foo = new Foo { FooId = fooId }; // create obj and set keys
context.Foos.Attach(foo);
foo.Name = "test";
context.SubmitChanges();

En définissant UpdateCheck="Never" pour toutes les propriétés du Dbml fichier, une seule instruction de mise à jour sera générée sans sélectionner d'abord l'entité d'origine.

Une mise en garde à noter est que si vous souhaitez définir une propriété sur null, vous devez initialiser l'objet avec une valeur différente pour permettre à LINQ de détecter le changement. Par exemple :

Foo foo = new Foo { FooId = fooId, Name = "###" };
...
foo.Name = null;

De plus, vous pouvez vérifier un horodatage lors de la mise à jour en définissant la propriété sur UpdateCheck="Always" dans le fichier Dbml. Cela garantit que l'instruction de mise à jour inclut une condition basée sur la valeur d'horodatage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn