Nous utilisons ASP.NET MVC 2 avec une couche de présentation contrôleur / vue et un modèle composé d'une couche logique métier, d'une couche d'accès aux données [procédures stockées et classes / méthodes pour parler aux procédures stockées].
Dans la couche de gestion et au-dessus pour la plupart des applications, Edit semble être capable de représenter à la fois la création d'un objet et l'édition d'un objet. Cela coïncide bien avec notre modèle de conception de référentiel qui définit une méthode "Enregistrer". Nous pouvons simplement vérifier dans la procédure stockée si l'ID est 0, puis créer un nouvel objet s'il est 0, sinon nous pouvons simplement mettre à jour l'objet existant, car l'ID de catégorie doit correspondre à un.
Le principal point de discussion est de savoir s'il est plus judicieux de diviser la modification qui inclut la création en ses parties distinctes de la création et de la modification au-delà de la couche DAL.
Un exemple évident peut être montré comme des itinéraires:
Créer - http: // someurl / somearea / edit / 0
Modifier - http: // someurl / somearea / modifier / 254
contre.
Créer - http: // someurl / somearea / create
Modifier - http: // someurl / somearea / modifier / 254
Existe-t-il des normes ou des meilleures pratiques établies à cet égard?
Je sais que c'est un petit détail, mais je pense que c'est logistiquement important.
la source
Réponses:
Je dirais certainement qu'il vaut la peine de séparer Créer / Modifier, sinon pour obéir au principe de responsabilité unique .
On pourrait prétendre qu'il y a un meilleur référencement en ayant également la bonne action dans l'url.
Ne pas séparer les deux rendrait également le code plus difficile à tester.
Un nouveau programmeur lisant le code ne trouverait probablement pas le code très intuitif pour créer des objets dans une méthode "edit", cela n'a tout simplement pas de sens sémantiquement. Je peux cependant sympathiser avec la méthode Save () dans le DAL.
En y réfléchissant, je ne vois pas vraiment les avantages de tout mettre dans une méthode Edit.
la source
Je préfère généralement créer une
Save
méthode dans le DAL, mais en fait implémenter leCreate
/Edit
/Delete
séparément.Par exemple, ma
Save
méthode vérifie l'état de l'objet et appelle la méthode Create / Edit / Delete en fonction de ce qui est nécessaireCela me permet d'appeler une seule méthode générique pour enregistrer n'importe quel objet, mais garde toujours la mise en œuvre de chacun (Créer, Modifier, Supprimer) séparée.
la source
State
propriété. Par exemple, cliquer sur leDelete
bouton marquera l'objet comme supprimé, puis appelezSaveChanges()