9 votes

MVC : comment travailler avec des entités comportant de nombreuses entités filles ?

Dans les exemples actuels sur ASP.NET MVC, je vois des entités assez basiques, avec des méthodes CRUD simples.
Mais je ne suis pas sûr de ce qu'il faut faire avec des modèles plus avancés. Laissez-moi vous donner un exemple :

Nous avons un site web pour le garage. Le garage a :

  • Inventaire avec carparts
  • Employees
  • Customers
  • Cars qui consiste en toutes les voitures qui sont/étaient dans le garage

Maintenant, prenons le car la voiture peut avoir une collection de employees qui ont travaillé sur la voiture (dérivé de l'original employee ajoute quelques accessoires supplémentaires qui le lient à la voiture), une collection de carparts qui ont été remplacés (également dérivés, ajoute par exemple SerialNr, et ReplacementDate prop), et bien sûr un customer du client propriétaire de la voiture.

Maintenant dans rest Je souhaiterais voir les éléments suivants :

/cars/423 [get]                  //show car # 423
/cars/423/edit [get]             //shows the edit form (ajax enabled, so also shows the other props)
/cars/423/carparts [get]          //gets the carparts inside the car
/cars/423/carparts/32/edit [post] //updates that specific carpart inside the specific car
/cars/423/employees [get]         //gets the employees who worked on the car
/inventory [get]
/inventory/1234/edit [get]        //gets the update form for carpart with ID 1234                   
/employees [get]                  //gets all the employees in the company

Alors, comment dois-je construire mes contrôleurs ? Devrais-je ajouter toutes ces méthodes CRUD pour les éléments enfants à l'intérieur de l'élément CarsController ? Cela ne fait-il pas un contrôleur très gros à cause des dizaines de méthodes (ce modèle est trop simplifié, la voiture a beaucoup plus de relations parent-enfant) ? Ou devrais-je créer un EmployeesInCar contrôleur (semble mauvais)... Merci beaucoup.

EDITAR:
Tout d'abord, l'exemple n'est qu'hypothétique, juste un exemple.
Si je suis la suggestion, j'aurais un CarController qui ne s'occupe que des voitures. Et mon PartsController ne gérerait que les Parts. Mais nous avons deux ensembles de Part s, un général (pour l'inventaire) ; et nous avons un Part à l'intérieur d'une voiture, qui dérive de la générale, mais ajoute des propriétés telles que SerialNumber y ReplacementDate .
Ainsi mon contrôleur Parts devient assez gros, pour l'exemple appelons les entités : GeneralPart (dans l'inventaire) et SpecificPart (la classe dérivée, avec les propriétés supplémentaires).

Index -> Returns all GeneralParts in inventory.
IndexByCar(int id) -> Return all SpecificParts by Car.
etc. etc.

Parce que chaque action porte soit sur une partie générale, soit sur une partie spécifique. Il en va de même pour les employés, nous avons la classe d'employé de base, et une classe spécifique, avec des propriétés supplémentaires.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X