Frage

Ich konnte sofort aktive Platten laufen lassen. Die Anweisungen zum Einstieg waren großartig und in kürzester Zeit hatte ich einen Webservice erstellt, mit dem ich Widgets in meiner vorhandenen DB erstellen und lesen konnte. Es war fantastisch. Wenn es um Aktualisierungen ging, fielen die Dinge auseinander. Ich würde das Objekt im Client bearbeiten und an den Dienst zurücksenden, aber wenn der Service es speichert, würde er nur eine neue erstellen. Ich argumentierte, dass dies bedeutete, dass ich die DB erneut formulieren und die Werte zuweisen müsste, die dem Client dem Dienst gesendet werden, aber mein Chef sagte, das wäre hacky und dass das Repository-Muster besser wäre, weil Pocos verwendet werden könnten. Leider ist das das Ausmaß der Anleitung, die ich erhalten habe. Also hier sind meine Fragen.

  1. Sind die T4 -Vorlagen nur gut für aktive Aufzeichnungen oder werden sie auch Ihr einfaches Repository für Sie aufbauen. ZB, gibt es auch etwas, das auch meine Pocos aufbaut, oder rollen sie alle Ihr eigenes?

  2. Hat jemand ein funktionierendes Beispiel für eine Subsonic 3 -Tier -Lösung gesehen? Ich habe darüber gelesen, aber gibt es Muster, die herumschweben?

Die Active Record -Proben/ Screencasts waren wirklich leicht zu verfolgen, weil sie an dem gleichen Punkt begannen, mit dem ich angefangen habe. Die einfachen Repository schienen sich mehr auf Migrationen und andere erweiterte Funktionen zu konzentrieren, und da dieses Zeug für mich neu ist, weiß ich nicht genug, um die Punkte zu verbinden.

Pfui. Es gibt nichts Schöneres, als eine Frist zu haben, um etwas zu lernen und es bis Ende der Woche laufen zu lassen. Jeder Rat wäre willkommen, auch wenn es sich um RTFM mit einem Link zu dem Handbuch handelt, das ich hätte lesen sollen.

Danke im Voraus

War es hilfreich?

Lösung

Wenn Sie ein Repository -Muster verwenden möchten, können Sie entweder das verwenden LINQ -Vorlagen oder verwenden Sie das einfache Repository, für das keine T4 -Vorlagen erforderlich sind.

Mit einem einfachen Repository erstellen Sie die Pocos selbst. SubSonic kann das Datenbankschema für Sie erstellen oder aktualisieren, wenn Sie möchten:

var repository=new SimpleRepository(SimpleRepositoryOptions.RunMigrations);

Aber wenn Sie mich fragen, würde ich wählen SimpleRepositoryOptions.None und aktualisieren Sie die Datenbank alleine.

Wie auch immer, Ihr anfängliches Problem mit den ActivereCord -Vorlagen könnte ziemlich einfach behoben werden. Ich schlage vor, Ihr ActivereCord -Objekt ist auf Client -Seite serialisiert und auf dem Server deserialisiert.

Der Standardkonstruktor eines ActivereCord -Objekts ruft die Init -Funktion auf, die so aussieht:

    void Init(){
        TestMode=this._db.DataProvider.ConnectionString.Equals("test", StringComparison.InvariantCultureIgnoreCase);
        _dirtyColumns=new List<IColumn>();
        if(TestMode){
            <#=tbl.ClassName#>.SetTestRepo();
            _repo=_testRepo;
        }else{
            _repo = new SubSonicRepository<<#=tbl.ClassName#>>(_db);
        }
        tbl=_repo.GetTable();
        SetIsNew(true);
        OnCreated();       

    }

Wie Sie sehen können, wird das interne Repository erstellt und SetIsNew(true) wird ausgeführt. Das einzige, was Sie tun müssen, ist anzurufen myitem.SetIsNew(false) Nachdem das Objekt mit den Deserialized -Werten bevölkert wurde. Ich nehme an, das reicht aus, um SubSonic während des Speicherns eine Update -Abfrage durchzuführen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top