2010-01-15 9 views
0

J'utilise LINQ to SQL (SQL Server) dans ASP.Net MVC. Ma page doit afficher toutes les régions et tous les bureaux dans chaque région (imbriquée). Les bureaux appartiennent à une banlieue, qui à son tour, appartiennent à une région. C'est à dire. Dans chaque région, je dois saisir les bureaux qui existent dans les banlieues qui appartiennent à la région actuelle dans la boucle.Passage de données imbriquées du contrôleur à la vue dans ASP.Net MVC (LINQ)

(code pseudo)

 
    foreach(Region currentRegion in Regions) 
    { 
     Display Region's Heading 
     foreach(Office currentOffice in ALL OFFICES WHICH BELONG TO SUBURBS WHICH BELONG TO THIS REGION) 
     { 
      Display Office Name 
     } 
    } 

Quelle est la plus propre, manière de paradigme MVC pour y parvenir avec LINQ to SQL?
(Je suis un grand fan SQL, mais j'utilise LINQ to SQL pour ce projet).

Je ne veux pas avoir à écrire 5 classes auxiliaires juste pour faire une chose si simple. Je ne suis pas à la recherche d'une solution de «monde parfait OO overkill», propre, minimaliste et simple qui soit la meilleure.

Je idéalement aime rassembler toutes les données dans le contrôleur afin que je ne termine pas avec une vue chaotique qui chevauche la responsabilité du contrôleur, etc.

+0

Pouvez-vous être plus précis sur le format de ces données, où elles sont conservées et comment récupérées? –

Répondre

0

Dans votre cas,

  • Je voudrais créer des classes de modèle de vue RegionModel, SuburbModel, OfficeModel.
  • En utilisant AutoMapper, je la carte Région à RegionModel et le transmettre à voir
  • Voir ressemblerait à ceci (Spark) =>

    <viewdata model="RegionModel region" /> 
    <for each="var suburb in region.Suburbs"> 
        <span each="var office in suburb.Offices">${office.Name}</span> 
    </for>   
    

C'est une réponse à la question « comment passer données imbriquées à afficher dans asp.net-mvc? '. Chose est - votre modèle ne correspond pas encore à cela (la classe de la région n'est pas directement liée à banlieue, banlieue avec bureaux). Donc, vous devez vous assurer que votre région contient des banlieues et que Banlieue contient des bureaux. Je ne suis pas sûr à propos de L2S mais dans nhibernate ce serait facile - les collections seraient mappées telles quelles et par défaut - gardées paresseuses. RegionController serait responsable de l'utilisation de RegionRepository correctement et RegionRepository devrait offrir la possibilité de charger les banlieues de chargement & sur demande.

+0

Salut Arnis! Merci pour votre réponse. Bien que je suis sûr que Spark et AutoMapper sont des add-ons fantastiques, je suis curieux de savoir comment cela peut être fait avec ASP.Net MVC pure/raw à ce stade. Je veux que mes connaissances dans ce domaine soient mises en avant avant que j'apprenne encore plus de cours/add-ons, etc. J'ai découvert que plus vous ajoutez d'add-ons à votre solution, plus vous pouvez vous retrouver avec des frais de maintenance accrus dans 2-3 ans, quand une partie de votre solution sera mise à jour et que tout à coup certains des add-ons seront alors non supportés ou ne seront plus compatibles, etc. – Aaron

+0

Rien ne changerait beaucoup - la syntaxe de la vue serait un peu plus verbeuse et la cartographie serait faite en créant des modèles de vue à travers des constructeurs ou des initialiseurs d'objets. –