Domanda

Sono stato in grado di ottenere record attivo in esecuzione subito. Le istruzioni per iniziare sono stati grandi e in nessun momento mi avevano costruito un webservice che mi permetteva di creare e leggere i widget nel mio db esistente. È stato incredibile. Quando si trattava di aggiornamento, però, le cose è crollato. Vorrei modificare l'oggetto sul client e rinviarlo al servizio, ma quando il servizio ha salvato, sarebbe solo crearne uno nuovo. Ho pensato che questo significava che avrei bisogno di ri-query il db e assegnare i valori inviati fino al servizio da parte del cliente, ma il mio capo ha detto che sarebbe hacky e che il modello repository sarebbe meglio, perché potrebbe usare pocos. Purtroppo questo è l'estensione della guida che ho ottenuto. Così qui sono le mie domande.

  1. Sono i modelli T4 solo un bene per record attivo o saranno accumulo il vostro semplice repository per voi pure. Ad esempio, c'è qualcosa che volontà gen i miei pocos troppo o sono tutto 'roll il proprio'?

  2. Qualcuno ha visto un esempio di lavoro di un subsonico a 3 livelli soluzione? Ho letto su di loro, ma ci sono dei campioni galleggianti intorno?

I campioni record attivo / screencast erano veramente facile da seguire perché hanno cominciato nello stesso punto stavo iniziando con. Le semplici quelli repository sembravano concentrarsi maggiormente su migrazioni e altre funzioni avanzate ed essendo che questa roba è nuovo per me, non so abbastanza per unire i puntini.

Ugh. Non c'è niente come avere una scadenza per imparare qualcosa e avere in esecuzione entro la fine della settimana. Qualche consiglio sarebbe il benvenuto, anche se è RTFM con un link al I manuale deve aver letto.

Grazie in anticipo

È stato utile?

Soluzione

Se si desidera utilizzare un modello di repository è possibile utilizzare la LINQ modelli o utilizzare il semplice repository che non richiede alcun modello t4.

Con un semplice repository di creare le pocos da soli. Subsonic può creare o aggiornare lo schema del database per voi se si sceglie:

var repository=new SimpleRepository(SimpleRepositoryOptions.RunMigrations);

Ma se mi chiedete vorrei scegliere SimpleRepositoryOptions.None e aggiornare il database da solo.

In ogni caso, il problema iniziale con i modelli ActiveRecord potrebbe essere fissato abbastanza facile. Suggerisco l'oggetto ActiveRecord è serializzato sul lato client e deserializzato sul server.

Il costruttore di default di un oggetto ActiveRecord chiama la funzione Init che assomiglia a questo:

    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();       

    }

Come si può vedere, si crea il repository interno e viene eseguito SetIsNew(true). L'unica cosa che dovete fare è chiamare myitem.SetIsNew(false) dopo che l'oggetto viene popolata con i valori deserializzate. Suppongo che è sufficiente per dire a subsonico a fare una query di aggiornamento durante il salvataggio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top