Wir verwenden ASP.NET MVC 2 mit einer Controller / View-Präsentationsebene und einem Modell, das aus einer Geschäftslogikebene, einer Datenzugriffsebene [Gespeicherte Prozeduren und Klassen / Methoden für die Kommunikation mit den gespeicherten Prozeduren] besteht.
In der Business-Schicht und darüber scheint Edit in der Lage zu sein, sowohl die Erstellung eines Objekts als auch die Bearbeitung eines Objekts darzustellen. Dies stimmt gut mit unserem Repository-Entwurfsmuster überein, das eine "Speichern" -Methode definiert. Wir können einfach in der gespeicherten Prozedur überprüfen, ob die ID 0 ist, und dann ein neues Objekt erstellen, wenn es 0 ist. Andernfalls können wir nur das vorhandene Objekt aktualisieren, da die Kategorie-ID mit einer übereinstimmen sollte.
Der primäre Diskussionspunkt ist, ob es am sinnvollsten ist, die Bearbeitung einschließlich der Erstellung in separate Teile von Erstellen und Bearbeiten außerhalb der DAL-Ebene aufzuteilen.
Ein offensichtliches Beispiel kann als Routen gezeigt werden:
Erstellen Sie - http: // someurl / somearea / edit / 0
Bearbeiten - http: // someurl / somearea / edit / 254
gegen
Erstellen - http: // someurl / somearea / create
Bearbeiten - http: // someurl / somearea / edit / 254
Gibt es diesbezüglich etablierte Standards oder Best Practices?
Ich weiß, dass dies ein kleines Detail ist, aber ich denke, dass es logistisch ein wichtiges ist.
quelle
Antworten:
Ich würde definitiv sagen, dass es sich lohnt, Create / Edit zu trennen, wenn man nicht dem Prinzip der Einzelverantwortung folgt .
Man könnte behaupten, dass es eine bessere Suchmaschinenoptimierung gibt, wenn man auch die richtige Aktion in der URL hat.
Wenn die beiden nicht getrennt werden, ist der Code auch schwerer zu testen.
Ein neuer Programmierer, der den Code liest, würde den Code wahrscheinlich nicht sehr intuitiv finden, wenn er Objekte in einer "Editier" -Methode erstellen müsste. Das ist semantisch einfach nicht sinnvoll. Ich kann jedoch mit der Save () - Methode in der DAL sympathisieren.
Wenn ich darüber nachdenke, kann ich die Vorteile einer Edit-Methode nicht wirklich erkennen.
quelle
Ich ziehe es in der Regel erstellen
Save
Methode in der DAL, aber tatsächlich implementieren dieCreate
/Edit
/Delete
getrennt.Zum Beispiel
Save
würde meine Methode den Objektstatus überprüfen und die Create / Edit / Delete-Methode aufrufen, je nachdem, was benötigt wirdAuf diese Weise kann ich nur eine allgemeine Methode zum Speichern eines Objekts aufrufen, die Implementierung der einzelnen Methoden (Erstellen, Bearbeiten, Löschen) bleibt jedoch getrennt.
quelle
State
Eigenschaft. Wenn Sie zum Beispiel auf dieDelete
Schaltfläche klicken, wird das Objekt als Gelöscht markiert. Rufen Sie dannSaveChanges()