ASP.NET MVC – Tutorials im Umbruch

Wie beginnt man am besten das Erlernen von ASP.NET MVC? Da MVC allermeist für große und wartbare Anwendungen eingesetzt wird, sind Schreiber von Tutorials versucht, ihr ganzes designtechnisches Können einzubringen. Das kann aber leicht den Blick auf das reine MVC verschleiern. Zudem ist ASP.NET MVC 2 gerade aktuell und alle raffiniert entworfenen Tutorials auf einen Schlag veraltet. Kommen noch sehr spezielle Techniken wie z.B der Inversion of Control-Container Castle Windsor hinzu, wird das Tutorial noch kurzlebiger. Aber schließlich bedeutet MVC erst einmal nichts anderes als die Trennung von Model, View und Controller. Die Persistenzschicht ist davon völlig unabhängig. Also lege ich mir für eine Beispielanwendung zuerst eine Grundlage, indem ich ein Datenmodell entwerfe und denke gar nicht daran, dass ich ja ASP.NET MVC lernen will. Mit dem Entity Framework 4 habe ich ja schon gute Erfahrungen gesammelt und entwerfe nachfolgend abgebildetes Modell: Ein Carsharing-Unternehmen hat verschiedene Autos und verschiedene Personen, die am Unternehmensmodell teilnehmen. Eine Person kann mehrere Buchungen machen und mehrere Buchungen können sich auf ein Auto beziehen.

car_sharing_datamodel

Das Letzte Mal, als ich mit dem EF 4 arbeitete, schrieb ich meine POCO-Entitäten und den Datenzugriff selbst. Meine Intuition verrät mir, dass das auch besser gehen kann und ich stoße auf den C# POCO Entity Generator, der von Microsoft bezogen werden kann. Mit dessen Hilfe werden beim Speichern des Datenbankmodells nach einem Template (T4-Template?) sowohl POCO-Entitäten als auch der Datenzugriffskontext generiert. Das Schöne: Ich kann das Template ändern. Will ich weiterhin den Kontext ein Interface implentieren lassen, ist das Template der Ort für diese zusätzlichen Codezeilen. Denn den generierten Code sollte man nicht anfassen, da bei einem lebenden Modell die Codegenerierung immer wieder erneut angestoßen wird.

Nachdem ich nach gewohntem Muster wieder ein Repository mit austauschbarem Kontext angelegt habe, zeigt mir ein Unittest im folgenden Code, dass die Persistenz ignorierenden generierten Entitäten die Konsistenz der Datenbank auch ohne mein Zutun gewährleisten. Die Tests sind nicht umfangreich, denn ich vertraue Microsoft.

        [TestMethod]
        public void TestConsistency()
        {
            Person p1 = _repository.GetPersonByEmail("h@d.de");
            Person p2 = _repository.GetPersonByEmail("o@s.de");

            IEnumerable<Booking> bookings = _repository.GetBookings(p1);

            foreach (Booking b in bookings)
                Assert.IsTrue(p1.Id == b.PersonId);

            Booking b1 = bookings.ElementAt(0);

            Assert.IsTrue(p1.Bookings.Contains(b1));

            b1.Person = p2;
            Assert.IsTrue(!(p1.Bookings.Contains(b1)));
            Assert.IsTrue(p2.Bookings.Contains(b1));
        }

Nun, da ich meine Persistenzschicht sauber abgetrennt habe, kann ich mich auf das eigentliche ASP.NET MVC-Framework stürzen. Ich habe keine Angst mehr vor dem ’schmutzigen’ Tutorial ASP.NET MVC Music Store von Microsoft. Ich genieße, dass es hier mal nicht ums Design geht und nun tut das Tutorial seinen Dienst und ist sehr gut nachvollziehbar. Das Übertragen auf meine eigene skizzierte Beispielanwendung Car Sharing zeigt mir, dass ich es verstanden habe. Interessant finde ich, dass die View-Schicht nichts mit dem Style zu tun hat, den man wiederum in einem separaten Stylesheet definiert. Die nachfolgenden Abbildungen kann ich mir nicht verkneifen.

car_sharing_home
car_sharing_car

 

Hinterlassen Sie eine Antwort