LinqToSQL - Best Practice

Signaler
Messages postés
70
Date d'inscription
jeudi 26 juillet 2007
Statut
Membre
Dernière intervention
20 janvier 2011
-
Messages postés
155
Date d'inscription
jeudi 12 mai 2005
Statut
Membre
Dernière intervention
8 mars 2011
-
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

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut,

Regardes du coté du design pattern singleton, de façon à n'avoir qu'une seule instance à trainer dans ton programme.
Messages postés
155
Date d'inscription
jeudi 12 mai 2005
Statut
Membre
Dernière intervention
8 mars 2011
1
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.