Bonjour! Dans cette partie de la série de didacticiels, j'expliquerai comment vous pouvez transmettre des données de la base de données à la vue à l'aide de DTO et de fournisseurs.
Présentation
1) Créer des DTO (objets de transfert de données) dans '03 – Domaine> Modèles dossier '.
classe publique CustomerDto { public int ID {get; ensemble; } chaîne publique Name {get; ensemble; } public string Email {get; ensemble; } }
- Les DTO sont comme des modèles où nous définissons des propriétés avec des getters et des setters.
- Comme leur nom l'indique, les DTO sont utilisés à la place des modèles réels pour «transférer des données» vers le contrôleur.
2) Créer un fournisseur classes dans lesquelles nous appellerons les méthodes DbContext et async.
- Dans ces méthodes async, nous appelons DbContext et stockons les données dans les DTO.
- Ces méthodes async seront appelées dans le contrôleur pour être transmises à la vue
Par où nous allons commencer
Dans la partie 1 de ce didacticiel, j'ai expliqué comment vous pourriez construire la structure de dossiers pour le projet ASP.NET MVC intégrant le framework d'entité de base de données. Dans la partie 2, j'ai expliqué comment vous pouvez publier la base de données et procéder à l'ingénierie inverse pour créer des modèles dbset. Voici la structure de dossiers à partir de laquelle nous allons commencer en nous basant sur les didacticiels précédents:
Détails
1) Ajoutez une classe «CustomerDto» sous le dossier «03 – Domaine> Modèles ». Ajoutez les propriétés (champs) dont vous avez besoin pour les données.
Dans cette structure de dossiers dans laquelle je travaille, remarquez comment le CustomerDto est stocké dans le dossier Models sous '03 – Domaine ', tandis que le modèle réel Clients est stocké dans le dossier Modèles sous '04 – Base de données' (reportez-vous à la deuxième image).
** N'oubliez pas! Nous devons remplacer la méthode DbContext.OnConfiguring (DbContextOptionsBuilder) dans le DatabaseContext pour configurer la base de données à utiliser dans ce contexte.
- Ceci configure la connexion à la base de données à l'aide de la chaîne de connexion configurée dans web.config. En d'autres termes, nous devons ajouter la chaîne de connexion dans le fichier web.config si nous ne l'avons pas!
À l'intérieur de la chaîne de connexion , la source de données est le nom du serveur (par exemple ou localhost), le catalogue initial est le nom de la table avec laquelle nous interagissons, Integrated Security = True nous permet d'accéder à la base de données à l'aide de l'authentification Windows. Il existe des ressources en ligne, dont celle-ci que j'ai trouvée: https://blog.elmah.io/the-ultimate-guide-to-connection-strings-in-web-config/
2) Maintenant, nous pouvons ajoutez une classe 'CustomerProvider' sous le dossier '02 – Application> Providers '.
- Declare the DbContext
- Create constructors (constructor chaining is used) that will instantiate the DbContext using Dependency Injection
Nous pouvons utiliser la méthode .ToListAsync () pour renvoyer une liste d'objets comme illustré ci-dessous.
En cours de route, vous devrez peut-être installer packages (EntityFrameworkCore) pour ajouter une référence au DbSet.
REMARQUE: Nous aurons besoin d'installer quelques packages Nuget pour utiliser la classe Task et SqlClient pour DbContext pour interagir avec le serveur Sql. Sans les installations, vous pourriez rencontrer des erreurs telles que «Impossible de charger le fichier ou l'assembly 'System.Threading.Tasks.Extensions'» comme celle illustrée ci-dessous:
Pour installer ces packages Nuget, accédez au Gestionnaire de packages Console.
Collez chacune de ces lignes dans 'PM>'
PM> Install-Package System.Threading.Tasks.Extensions -Version 4.5.4
PM> Install-Package Microsoft. Data.SqlClient -Version 2.1.0-preview1.20235.1
Référence:
https://www.nuget.org/packages/System.Threading.Tasks.Extensions/
https : //www.nuget.org/packages/Microsoft.Data.SqlClient/2.1.0-preview1.20235.1
C'est à peu près tout pour créer des DTO et des méthodes dans la classe du fournisseur. Maintenant, nous pouvons appeler la méthode depuis le contrôleur et la passer à la vue!
4) Dans nos exemples, nous utiliserons IndexController. Créez des constructeurs pour instancier les fournisseurs. Je peux appeler la méthode .GetCustomerAsync () que j'ai créée dans le fournisseur, la stocker dans une variable pour la transmettre à la vue.
5) Voici comment notre page de rasoir et la vue ressemblera à ceci:
Source link