2009-05-27 10 views
0

Je pense à créer un bouton de contrôle personnalisé qui ferait des tâches CRUD pour moi. Permettez-moi d'élaborer:Créer un bouton de contrôle personnalisé .NET pour CRUD

Je voulais quelque chose qui gagne du temps pour écrire du code sur chaque interface utilisateur pour les tâches CRUD. Je suis ici parce que je veux m'assurer que l'approche que je prends doit être vérifiée avant que je mette des heures et que je prenne du poids.

Un bouton de contrôle personnalisé (peut être un contrôle utilisateur) qui prendra un délégué. Ce délégué aurait une EventArg personnalisée qui prendrait la référence de classe bussiness, et une énumération CRUD (Create, Read, Update, Delete). Chaque classe d'affaires implémentera une interface qui permettra de définir 4 fonctions (fonctions CRUD). Maintenant, une fois que vous avez fait glisser ce contrôle sur un formulaire, que devez-vous faire est de créer un délégué qui aura besoin de la référence de classe d'entreprise et l'énumération CRUD pour effectuer une fonction CRUD.

Je ne suis pas sûr que l'approche que j'ai prise est correcte. Mais il semble que cela rendra ma vie beaucoup plus facile et le code gérable. S'il vous plaît, aidez-moi ce que vous pensez que ceci me guérir ou me maudire :)

P.S: J'apprécierai si l'explication vient avec un exemple d'exemple. Merci.

Répondre

1

Je voudrais séparer le CRUD en 4 commande séparée. Donc un pour Créer, un pour Lire ... et ensuite j'implémenterais l'événement button.Click sur le formulaire que le bouton est utilisé. Dans le cas, j'exécuterais la bonne commande CRUD.

Exemple:

public interface ICommand 
    { 
    void Execute(); 
    } 

    public class UpdateCommand : ICommand 
    { 
    public UpdateCommand() 
    { 
     // Maybe some business logic has to be passed in the ctor. 
    } 

    public void Execute() 
    { 
     // Do the update stuff here 
    } 
    } 

    // somewhere in the Form: 

    public void Button_Update_Click(object sender, EventArgs e) 
    { 
    UpdateCommand command = new UpdateCommand(); 
    command.Execute() 
    } 

Peut-être que this link vous aidera à comprendre le modèle de commande.

Il vous aide à séparer la fonctionnalité et à la tester facilement en utilisant TDD.

+0

Merci crauscher. Pourriez-vous élaborer avec un exemple? J'apprécierai cela. –

+0

Merci beaucoup :) Je suis également en train d'écrire du code pour ma requête ci-jointe. Sûrement partager cela à vous. En fait, je pense à quelque chose basé sur la délégation. Un seul délégué qui prend la classe métier et un type enum qui définit l'opération (commande) et fait le travail. –

+0

ne distinguent pas les opérations basées sur une énumération. Voir http://www.objectmentor.com/resources/articles/ocp.pdf et http://www.objectmentor.com/resources/articles/lsp.pdf. En fait, je ne sais pas comment résoudre votre problème concret, mais je préférerais que je le fasse, et non par une énumération et un délégué. – crauscher

0

Vous pouvez faire quelque chose de très similaire avec les contrôles ObjectDataSource et DetailsView ou FormView intégrés. Je resterais avec ceux plutôt que d'écrire le vôtre. Si vous voulez vraiment gagner du temps, consultez les sites ASP.NET Dynamic Data.

+0

Mais cela signifierait une application à un niveau. Est-ce vraiment utile ou le compromis est-il trop important? – crauscher

+0

Base de données + objets métier + interface utilisateur = 3 couches. Je n'utilise pas l'ODS moi-même, mais je pense qu'il est conçu pour fonctionner au mieux avec les objets métier d'enregistrement actif, ce que vous proposez. Sans connaître votre entreprise et cette application, je ne peux pas commenter les compromis. Dynamic Data est une bête différente et nouvelle pour moi. Nous pouvons l'utiliser pour un site d'administration pour éditer des tables de recherche. –

Questions connexes