Question

J'ai juste commencé à l'aide de Linq to SQL, et je me demandais si quelqu'un a des meilleures pratiques qu'ils peuvent partager pour la gestion des dbml fichiers.

  • Comment voulez-vous garder à jour avec la base de données?
  • Avez-vous un seul fichier dbml pour l'ensemble de la base de données, ou est-il divisé en plusieurs unités logiques?
  • Comment fonctionne la gestion de ce fichier de travail dans un environnement d'équipe?

Tout les autres trucs et astuces de bienvenue.

Était-ce utile?

La solution

Avez-vous regardé SqlMetal?C'est officiellement pris en charge, bien que ne favorise pas trop.Vous pouvez l'utiliser pour construire dbmls à partir de la ligne de commande, - nous l'avons utilisé comme partie d'un db de l'intégration continue les mises à jour (assurez-vous que vous avez vraiment de la bonne séparation de code si vous faites cela, cependant, des classes partielles sont un sauveur - le dbml seront écrasés).

Si je me souviens bien il n'a pas tout à fait les mêmes caractéristiques que le modèle de concepteur de Visual Studio (je pense que c'poignées de pluralisation différemment).Il y a un bon post à ce sujet sur Ben Hall du blog.

Autres conseils

Le fait que le L2S designer ne prend pas en charge la synchronisation avec la base de données de la structure est une énorme limitation dans mon esprit.Cependant, il existe un add-in qui fournit des capacités de synchronisation:

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

Malheureusement, il n'est plus libre.

Depuis que vous avez demandé pour d'autres conseils et astuces pour la gestion des DBML...

Lorsque DBML fichiers sont actualisées à partir de la base de données, il y a certains paramètres de schéma qui ils ne ramassent pas, tels que par défaut les valeurs de colonne, vous forçant à changer manuellement le réglage.Cela peut conduire à des heures perdues à chaque fois que vous actualisez la DBML sans s'en rendre compte ou de se souvenir où vous avez besoin de faire des ajustements manuels, et votre code commence à tomber en panne.

Pour se prémunir contre cela, une astuce consiste à écrire un test unitaire qui utilise la réflexion pour vérifier le LINQ métadonnées pour ceux (manuel) des paramètres.Si le test échoue, il donne un message d'erreur descriptif, demandant à l'utilisateur de faire le bon changement pour les propriétés de la colonne.Ce n'est pas une solution parfaite, et il pourrait ne pas être pratique si vous avez de nombreux réglages manuels, mais il peut aider à éviter certains des principaux douleur pour vous-même et votre équipe.

Voici un exemple de test nunit pour vérifier qu'une colonne est définie sur auto-générer à partir de la 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 est un ensemble de code de modèles de génération pour générer des LINQ to SQL.Il prend en charge la synchronisation avec la base de données et de la division d'entités en plusieurs classes avec de nombreuses autres fonctionnalités qui font de LINQ to SQL facile à utiliser.

Découvrez la PLINQO site http://www.plinqo.com ainsi que les vidéos d'intro.

Voici un lien qui donne de bonnes informations sur LINQ to SQL meilleures pratiques

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top