2009-09-16 9 views
2

J'ai actuellement un seul DataSet déclaré qui contient 3 tables. Par souci de cet exemple, nous les appellerons Utilisateur, Question et Réponse.Comment remplacer une méthode TableAdapter sur une table dans un DataSet?

Sur chacun d'entre eux, j'ai un TableAdapter avec les diverses méthodes requises, à savoir. GetData(), Update(), Delete() etc.

Sur la table de réponse, je voudrais substituer la méthode de mise à jour de TableAdapter pour ajouter certains paramètres qui ne font pas partie de la table, mais je dois passer en raison à l'exigence ObjectDataSource.

Comment faire pour contourner la méthode Update() sur le Answer TableAdapter?

En essayant de garder le projet simple, je ne veux pas créer une couche DAL séparée.

Répondre

3

Toute classe TableAdapter générée par le concepteur, ses membres appropriés marqué comme virtuel - cela inclut la méthode Update et Fill parmi d'autres. Hemce, la solution consiste simplement à hériter de la classe TableAdapter générée par le concepteur et remplacer la méthode Update, en y ajoutant votre code personnalisé.

Vous avez également la possibilité de surcharger la méthode Update si vous souhaitez modifier la signature de la méthode (nombre de paramètres/types). Vous pouvez le faire soit sur une classe dérivée, ou plus commodément à mon avis, en utilisant une méthode d'extension:

public static void Update(this MyTableAdapter tableAdapter, ... other params ...) 
{ 
    // do stuff here 
    tableAdapter.Update(...); 
} 
+0

Merci. Malheureusement, je ne suis toujours pas au courant des méthodes d'extension. – BinaryMisfit

+0

Pas de problème. Et oui, les méthodes d'extension nécessitent un changement de mentalité, bien que vous les aimiez une fois que vous vous y êtes habitué. :) – Noldorin

Questions connexes