Question

En examinant la vitrine de Conery, je ne comprends pas pourquoi il a utilisé les classes générées automatiquement par Linqs (c.-à-d. la classe Order), puis il a défini une autre classe Order qui n'est pas une classe partielle. QUAND utiliser un modèle de référentiel doit-on créer manuellement les classes et ignorer complètement Datacontext?

Était-ce utile?

La solution

Si vous ne dissociez pas votre front-end des classes linq à l'aide d'une classe intermédiaire, vous ne pouvez pas contrôler avec le contexte de données s'il est récupéré. Généralement, avec les types d'instances de contexte de données, vous souhaitez les supprimer dès que vous avez fini de les utiliser. Voici comment procéder avec le contexte linq to sql:

using (MyDataContext data = new MyDataContext())
{
    SomeThing thing = data.Things(t => t.ID == 1);
    return thing;
}
... the MyDataContext instance is gone

Avec "" using " bloc, vous supprimez l'instance de MYDataContext au dernier "}}". Cependant, si vous faites cela, vous obtiendrez une erreur, puis vous essaierez d'utiliser " chose " parce que l'instance de contexte de données est parti. Si vous ne supprimez pas le contexte de données, celui-ci reste en suspens jusqu'à ce qu'il soit finalement nettoyé.

Si vous introduisez une classe intermédiaire pour découpler le code linq en code sql de l'application appelante, vous pouvez toujours vous débarrasser de votre instance de contexte de données et renvoyer les mêmes données (uniquement dans un objet différent):

using (MyDataContext data = new MyDataContext())
{
    SomeThing thing = data.Things(t => t.ID == 1);
    SometThingElse otherThing = ConvertSomethingToSomethingElse(thing);
    return otherThing;
}
... the MyDataContext instance is gone

L’espoir que cela aide.

Autres conseils

Rob a répondu à cette question dans l'une de ses émissions.

Il est important d’utiliser les classes POCO pour connaître toutes les classes d’accès aux données. Par exemple, lorsqu'il remplace LINQ-to-SQL par NHibernate tout ce dont il aura besoin, je modifie ses "mappages". dans ses filtres, et il n'aura aucun changement à faire dans la logique de l'entreprise.

Il a déclaré dans l'une de ses dernières vidéos qu'il n'aimait pas la façon dont LINQ to SQL mappe. Je suis d’accord mais je pense que c’est une surexploitation complète.

Je dirais que vous ne modifiez pas les principaux modèles de conception tant que vous vous en tenez au modèle de référentiel lui-même. Je pense que c'est une question de choix d'avoir 2 séries de classes, toutes mauvaises, toujours un choix.

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