Voici un problème intéressant. Existe-t-il un moyen d'écrire du code en utilisant LINQ to SQL qui est capable d'effectuer une table UPDATE en sachant seulement que la table donnée contient les colonnes x, y, z mais ne sachant pas au moment de la compilation à quelle table elle traite?Instructions DRY LINQ pour les tables avec des colonnes communes
J'ai plusieurs tables dans mon schéma de base de données qui partagent certaines colonnes et je dois appliquer une opération UPDATE basée sur un ensemble qui est identique dans sa procédure logique, quelle que soit la table concernée. Voici un exemple simple: disons que vous avez 3 tables qui implémentent une hiérarchie de modèle de contiguïté (ie chaque ligne contient un ID de clé primaire et une colonne d'identification parent auto-référencée). Chacune des tables a aussi un drapeau booléen 'Disabled'. Lorsque je désactiver une instance de l'une de ces entités, il devrait en cascade à travers les éléments enfants, à savoir
MISE À JOUR MyTable SET disabled = 1 WHERE ID = @ID ou PARENT_ID = @ID
Je ne vouloir écrire ces types d'instructions LINQ pour chaque entité, cela viole DRY. Cela peut sembler trivial avec cet exemple, mais comme l'exemple devient plus complexe, vous dupliquez des quantités croissantes de code. Je suis sûr qu'il doit être possible d'utiliser une interface et peut-être des génériques, mais j'ai du mal à trouver une solution élégante.
Je ne ai pas besoin de passer outre la fonctionnalité de LINQ à requête SQL, il suffit d'écrire du code non dupliquée à consommer la mise en œuvre IQueryable existante. – Matt