Le projet dans lequel je travaille nécessite beaucoup de pages de recherche/filtrage. Par exemple, j'ai une page de recherche comlex pour obtenir des problèmes par données, catégorie, unité, ...Lequel préférez-vous pour la recherche/rapport DataTable ou DTO ou classe de domaine?
La classe de domaine de problème est complexe et contient beaucoup d'objets de valeur et d'objets enfants.
.Je me demande comment les gens font face à la recherche/filtrage/reporting pour l'interface utilisateur. Autant que je sache, j'ai 3 options mais aucune d'elles ne me rend plus heureux.
1.) Envoyer des paramètres au référentiel/DAO pour obtenir DataTable et Bind DataTable à l'interface utilisateur Controls.For Exemple à ASP.NET GridView
DataTable dataTable =issueReportRepository.FindBy(specs);
.....
grid.DataSource=dataTable;
grid.DataBind();
Dans cette option, je peux simplement en passer la couche de domaine et requête base de données pour des spécifications données. Et je ne dois pas obtenir l'objet de domaine complexe entièrement construit. Pas besoin d'objets de valeur, objets enfants, .. Obtenir des données à afficher dans l'interface utilisateur dans DataTable directement à partir de la base de données et afficher dans l'interface utilisateur.
Mais si j'ai besoin d'afficher un champ calculé en UI comme la valeur de retour de la méthode, je dois le faire dans la base de données parce que je n'ai pas entièrement l'objet de domaine. Je dois dupliquer des problèmes de logique et de DataTable comme aucun intellisense etc ...
2.) Envoyer des paramètres au référentiel/DAO pour obtenir DTO et relier DTO aux contrôles d'IU.
IList<IssueDTO> issueDTOs =issueReportRepository.FindBy(specs);
....
grid.DataSource=issueDTOs;
grid.DataBind();
Cette option est la même que ci-dessus mais je dois créer des objets DTO anémiques pour chaque page de recherche. Aussi pour différentes pages de recherche de problème je dois montrer différentes parties du problème Objects.IssueSearchDTO, CompanyIssueTO, MyIssueDTO ....
3.) Envoyer des paramètres à la classe Real Repository pour obtenir des objets de domaine entièrement construits. J'ai aimé Domain Driven Design et Patterns. Dans cette option, je dois créer des lots d'objet enfant et valeur qui n'apparaîtront pas dans l'interface utilisateur. De plus, il faut que ob ob soit beaucoup pour obtenir l'objet de domaine complet et le coût de performance pour les enfants. objets et objets de valeur.
Je n'utilise aucun outil ORM Peut-être que je peux implémenter Lazy Loading à la main pour cette version mais cela semble un peu exagéré.
Lequel préférez-vous? Ou est-ce que je le fais mal? Y a-t-il des suggestions ou une meilleure façon de le faire?