application multicouche & linq to entities

a marqué ce sujet comme résolu.

bonjour

je suis débutant en développement des application multiples layers veuillez s’il vous plais répondre sur cette question

dans une application bon de commande ASP.NET MVC multicouche, est ce que les requette linq faisant calculer le total des pris des items d’in bon commande doivent être écrit au niveau des repositories (data access layer) ou bien au niveau des classes BLL (business layer) avec des exemple s’il vous plais surtout en mvc

voici un exemple et je veux votre avis si correct ou non et votre correction:

l’exemple contient trois classe qui sont:

repository de bon commande dans data access layer

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
namespece Dal
{
      public class RepositoryBonCommande
      {
             BCmdeContext context = new BCmdeContext();

             public IEnumrebale<BonCommande> GetAll()
             {
                  context.BonsCommande;
             }
//la suite de code
      }
}

repository item bon de commande (aussi data acess layer):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
namespece Dal
{
      public class RepositoryItemBonCommande
      {
             BCmdeContext context = new BCmdeContext();

             public IEnumrebale<ItemBonCommande> GetAllItemById(BonCommande bc)
             {
                  context.ItemBonCommande.where(i => i.BonCmdeId == bc.BonCmdeId);
             }

            public ItemBonCommande GetItemById(int id)
            {
                 context.ItemBonCommande.Find(id);
            }
//la suite de code
      }
}

et la class BonCommandeBLL (business layer):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
namespace BLL
{
      public class BonCommandeBLL
      {
            RepositoryBonCommande rbc = new RepositoryBonCommande();
            RepositoryItemBonCommande ribc = new RepositoryItemBonCommande();

            public IList<BonCommande> GetAll()
           {
               return rbc.GetAll();
           }

            public decimal GetPrixTotal(BonCommande bc)
           {
                var query = from item in ribc.GetAllItemById(bc)
                                 select sum(item=>item.Prix * item.Quantite);
                return query;
            }
      } 
}
  • le calcule total des prix se fait au niveau de repository ou bien au niveau de BLL (en peut faire cette requette linq avec context dans le repository)?
  • les méthode CRUD se fait au niveau de repository et ils sont appelé au niveau de BLL n’est ce pas?
  • la méthode d’extension where ou bien la clause where dans la requette linq to entity est elle corresponde au régles de métier (sera implémenté au niveau de BLL) ou bien corresponde d’accé au donnée au données en lecture (au niveau de repositories).
  • le code source est il correct? connaisszez vous des bonnes pratique?

tout aide, proposition sera apprécie

à bientôt

Je ne vois pas d’erreur en soit dans ton code puisque pour l’instant ton système est très simple. Sauf peut être que tu utilises la terminologie d’une application n tiers alors que ton message est taggé "asp.net mvc".

les méthode CRUD se fait au niveau de repository et ils sont appelé au niveau de BLL n’est ce pas?

yep

la méthode d’extension where ou bien la clause where dans la requette linq to entity est elle corresponde au régles de métier (sera implémenté au niveau de BLL) ou bien corresponde d’accé au donnée au données en lecture (au niveau de repositories).

tout dépend ce que tu appelles "la requête linq". Une grande partie de tes requêtes seront des requêtes d’accès aux données, donc c’est du data access layer (repository).

+0 -0

bah vu ce que tu as fait tu as un truc qui est clairement n-tiers que tu essaies de pousser dans l’architecture MVC. Tant que tu y arrives ça "ira", mais volontairement aller chercher des philosophies qui sont différentes de MVC pour faire une appli asp.net mvc c’est contrintuitif.

ASP.NET MVC est fait pour respecter l’architecture MVC.

L’architecture MVC, bien que ressemblant à une sorte d’architecture 3 tiers n’en est pas une et sur plusieurs points est incompatible.

Tant que ton système est très simple, il se peut que tu ne découvre pas les incompatibilités entre les deux, mais au fur et à mesure, ça risque de devenir contrintuitif pour toi ou pour toute personne qui t’aiderait dans ton projet.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte