Domanda

Ho appena iniziato a utilizzare Linq to SQL, e mi chiedevo se qualcuno ha qualche best practice che possono condividere per gestire i file dbml.

  • Come si fa a tenere il passo con il database?
  • Hai un unico file dbml per l'intero database, o è diviso in più unità logiche?
  • Come si fa a gestire questo file di lavoro in un ambiente della squadra?

Eventuali altri suggerimenti e trucchi di benvenuto.

È stato utile?

Soluzione

Hai guardato SqlMetal?E ' ufficialmente supportato, anche se non promossa troppo.Si può utilizzare per costruire dbmls da riga di comando - abbiamo utilizzato come parte di un db continui aggiornamenti integrazione (assicurati di avere davvero un buon codice di separazione, se potete fare questo, però - classi parziali sono un salvatore, come il dbml verrà sovrascritto).

Se mi ricordo bene non ha praticamente le stesse caratteristiche come il modello di progettazione in Visual Studio (penso che gestisce pluralizzazione in modo diverso).C'è un buon post a riguardo sul Ben Hall blog.

Altri suggerimenti

Il fatto che il L2S designer non supporta la sincronizzazione con la struttura del database è una enorme limitazione nella mia mente.Tuttavia, c'è un add-in è disponibile che fornisce alcuni re-capacità di sincronizzazione:

http://www.huagati.com/dbmltools/

Purtroppo, non è più libero.

Dal momento che hai chiesto per altri consigli e trucchi per la gestione di file DBML...

Quando i file DBML sono aggiornati dal database, ci sono alcune impostazioni dello schema, che non pick up, come ad esempio quelle di default i valori di colonna, costringendo a modificare manualmente l'impostazione.Questo può portare a perdita di ore ogni volta che si aggiorna il file DBML, senza rendersene conto, o ricordando in cui è necessario effettuare regolazioni manuali, e il codice di avvio per mancanza di.

Per evitare questo, un trucco è quello di scrivere una unità di test che utilizza la riflessione per verificare il LINQ metadati per coloro (manuale) impostazioni.Se il test ha esito negativo, dà un messaggio di errore descrittivo, chiedendo all'utente di effettuare il corretto modificare le proprietà della colonna.Non è una soluzione perfetta, e non potrebbe essere conveniente se si hanno molte impostazioni manuali, ma può aiutare a evitare il dolore importante per te e il tuo team.

Ecco un esempio di un nunit test per verificare che una colonna di auto-generare dal DB.

    [Test]
    public void TestMetaData()
    {
        MyObj my_obj = new MyObj()
        {
            Foo = "bar",
        };

        Type type = MyObj.GetType();
        PropertyInfo prop = type.GetProperty("UpdatedOn");
        IEnumerable<ColumnAttribute> info = (IEnumerable<ColumnAttribute>)prop.GetCustomAttributes(typeof(ColumnAttribute), true);
        Assert.IsTrue(
            info.Any<ColumnAttribute>(x => x.IsDbGenerated == true), 
            "The DBML file needs to have MyObj.UpdatedOn AutoGenerated == true set. This must be done manually if the DBML for this table gets refreshed from the database."
        );
    }

PLINQO è un insieme di generazione del codice di modelli di generazione di LINQ to SQL.Esso supporta la sincronizzazione con il database e la divisione di entità in più classi insieme con molte altre caratteristiche che rendono LINQ to SQL facile da usare.

Controllare il PLINQO sito http://www.plinqo.com così come l'intro del video.

Ecco un link che fornisce buone informazioni su LINQ to SQL migliori pratiche

http://www.a2zmenu.com/LINQ/LINQ%20to%20SQL%20Best%20Practice.aspx

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