LinqToSQL - Best Practice

Djzlouk Messages postés 70 Date d'inscription jeudi 26 juillet 2007 Statut Membre Dernière intervention 20 janvier 2011 - 15 nov. 2010 à 12:48
Shaolyne Messages postés 155 Date d'inscription jeudi 12 mai 2005 Statut Membre Dernière intervention 8 mars 2011 - 15 nov. 2010 à 14:11
Bonjour,

J'ai réalisé un site web avec LinqtoSQL et ca marche d'enfer!!!
Par contre je me pose quelques qustions de structure.

Donc j'ai fait 3 projets :
[list]
[*] Web (Partie présentation)
[*] Model(Modélisation de la bdd)
[*] Metier (Couche d'acces aux données avec les logiques qui vont bien)
/list

Dans ma couche metier, j'ai plusieurs class : BLLUser, BLLAffaire, BLLDroit... et je ne sais pas trop ou instancier mon datacontext LinqToSQL.

Quelques examples :
1)
public class BLLUser
    {
        private static readonly LinqToSqlDataContext Dao = new LinqToSqlDataContext();

        public static IEnumerable GetUser(bool isActif = true)
        {
            if (isActif)
            {
                return Dao.Users.Where(c => c.IsActif);
            }
            return Dao.Users;
        }

        public static User GetUser(int idUser)
        {
            return Dao.Users.FirstOrDefault(c => c.IdUser == idUser);
        }
}


2)
public class BLLUser
    {
        public static IEnumerable GetUser(bool isActif = true)
        {
            using (var Dao = new LinqToSqlDataContext())
            {
                if (isActif)
                {
                    return Dao.Users.Where(c => c.IsActif);
                }
                return Dao.Users;
            }
        }

        public static User GetUser(int idUser)
        {
            using (var Dao = new LinqToSqlDataContext())
            {
                return Dao.Users.FirstOrDefault(c => c.IdUser == idUser);
            }
        }
}


Bref 2 possibilités qui se ressemblent beaucoup mais laquelle est la mieux? Es qu'il y a d'autre possibilité?

Merci bien pour vos retour.

2 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
15 nov. 2010 à 13:14
Salut,

Regardes du coté du design pattern singleton, de façon à n'avoir qu'une seule instance à trainer dans ton programme.
0
Shaolyne Messages postés 155 Date d'inscription jeudi 12 mai 2005 Statut Membre Dernière intervention 8 mars 2011 1
15 nov. 2010 à 14:11
Bien le bonjour Djzlouk,

La solution a adopter dépend majoritairement de l'utilisation que tu fais de LinQ2SQL. En effet, en choisissant une solution particulière, tu pourrais te trouver bloqué.
Une analyse réalisée par Rick Strahl décrit très bien les problématiques que tu peux rencontrer dans chaque cas: http://www.west-wind.com/weblog/posts/246222.aspx

Concernant un singleton, je pense qu'il n'aurait pas d'intérêt particulier étant donné que la solution 1 propose déjà une instance unique du dataContext (la seule différence est le moment où l'instanciation est réalisée)

Shao.
0
Rejoignez-nous