Inscrivez-vous à ma Newsletter pour recevoir mes astuces et conseils sur la programmation en C#/.NET ... Voici le formulaire d'inscription : bit.ly/3hB5nUk
Merci !!! J'ai fait une vidéo sur Entity Framework Core avec trois tables: Many to Many et One to Many: th-cam.com/video/TZBW5-_-MfU/w-d-xo.html J'ai bien noté votre suggestion.
Bonjour, IEnumerable est une interface, les collections (Liste etc.) l’implémentent, ça nous donne la possibilité de les parcourir (peuvent être énumérées) avec par exemple la boucle “foreach”. La méthode IEnumerable Get () peut retourner n’importe quelle collection qui implémente IEnumerable, par exemple List ... Pour plus d’informations: learn.microsoft.com/fr-fr/dotnet/api/system.collections.ienumerable?view=net-7.0 Bien à toi,
Bonjour, Il n'y a pas de fichier Startup.cs dans la version .NET 6, désormais la configuration se trouve dans le fichier Program.cs. J'ai ajouté une vidéo avec la version .NET 6 sur Entity Framework, j'ai utilisé le fichier Program.cs pour ajouter la configuration, tu peux la consulter : th-cam.com/video/alYmXFCCOmM/w-d-xo.htmlm29s Bien à toi,
Bonjour merci beaucoup pour vos explications, svp j'ai suivi toutes les étapes mais un pb lors de la génération de la base de données, je reçois toujours cette erreur: ClientConnectionId:00000000-0000-0000-0000-000000000000 Error Number:-1,State:0,Class:20 A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SNI_PN11, error: 26 - Error Locating Server/Instance Specified)
Bonjour, Merci pour ton commentaire. Conernant ta question : Entity Framework ne trouve pas ton serveur de base de données.As-tu installé SQL Server Express ? Si oui, est-ce que tu arrives à te connecter en utilisant SQL Server Management Studio. Si ce n'est pas le cas, tu peux installer SQL Server Express et SQL Management Studio en utilisant ces liens : - www.microsoft.com/fr-fr/sql-server/sql-server-downloads (tu peux choisir Express) - docs.microsoft.com/fr-fr/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15 Si le problème persiste, pourrais-tu poster ta connectionString ? Bien à toi,
Bonjour, on peut opter pour l'approche database first, on génère les classes modèle en utilisant la base de données existante. Tu peux apporter des modifications dans la db si nécessaire et regénérer le modèle. J'ai fait une vidéo qui explique comment le faire. Voicil le lien: th-cam.com/video/alYmXFCCOmM/w-d-xo.html
Autre chose, si mon API doit avoir du code Metier, est-ce que je créais un nouveau dossier que j'appel Metier ? Depuis mon contrôleur j'appel les fonctions de ma Class Metier correspondant au traitement ? Quel est la bonne pratique pour faire ça ? Ex : le client envoie des données qui doivent être calculer, ensuite le résultat je dois le save dans SQL puis retourner que tout c'est bien passé.
Si c'est un petit projet, tu peux créer comme tu dis un dossier qui contient ta classe ou plusieurs pour faire le traitement.Ensuite, tu ajoutes dans le contrôleur une propriété (de type : ta nouvelle classe) et tu l'injectes via le constructeur. Voici un tuto qui explique comment utiliser l'injection des dépendances : www.tutorialsteacher.com/core/dependency-injection-in-aspnet-core Par contre, si c'est un projet complexe, il faut réfléchir à l'architecture au préalable. Généralement, on ajoute plusieurs projets à la même solution dans Visual Studio. Exemple de projets à ajouter dans la solution : - Api web : Contrôleurs ... - Une couche Modèle de type Class Library (bibliothèque de classes) qui contient les classes qui seront utilisées pour générer la base de données si on opte pour une stratégie Code-First avec Entity Framework. - Une Couche Métier (Class Library) pour effectuer les traitements, accéder à d'autres web services et backends etc. Le projet Api web utilisera les autres projets (couches) comme dépendances. Bien à toi,
Très Bien !! Mais tout ce que je ne comprends pas, la base des données devrait quand même existait bien avant ! Possible de refaire avec un BD qui existe au préalable ??
Bonjour, Il y a deux approches: code first ou database first. Dans cet exemple, la base de données n'existe pas, mais on peut biensur avoir une base de données ensuite on génère nos classes J'ai fait une vidéo qui explique l'approche database first, ce n'est pas une API mais on peut utiliser la même approche dans une API en .NET. Voici le lien: th-cam.com/video/alYmXFCCOmM/w-d-xo.html Merci pour ton message
Bonjour Monsieur, j'ai cherché des heures mais je n'arrive pas a comprendre comment ajouter des elements dans la table d'association depuis un controleur (j'ai tjr une erreur du type : la classe n'a pas de key (j'ai creé une classe SchoolCourse), car effectivement cette table n'a pas d'identiifiant propre). Bref, comment faire pour ajouter une assoication dans la table d'association depuis un controleur. Merci bq de votre temps
Bonjour, Pour ajouter des éléments dans la table d'association depuis un contrôleur, il faut tout simplement les ajouter dans la liste d'un objet puis le sauvegarder. Par exemple, si on a une relation many-to-many entre un cours et un étudiant, on peut créer un étudiant, puis mettre dans la liste des cours de de cet étudiant un nouveau cours. Quand on sauvegarde cet étudiant, Entity Framework va ajouter un élément dans la table d'association qui contiendra la clé de l'étudiant et la clé du cours. On n'ajoute pas directement dans la table d'association, c'est Entity Framework qui génère la requête. On a pas besoin d'une classe d'association. J'ai montré un exemple de many-to-many dans cette vidéo: th-cam.com/video/-tZLsJEEqeU/w-d-xo.html Bien à toi,
@@meziane je vous dérange une derniere fois car j'ai essayé toute la matiné en vain d'ajouter un élement à la liste (la structure de mon code est identique a celle de votre video MVCSchool ou Student = User et Course = Projet. Je suis dans le ProjetController et voila à quoi j'ai aboutis (sans succes) : [HttpPost] [ValidateAntiForgeryToken] public async Task AddProjectToUserr() { var User1 = _context.Users.FirstOrDefault(u => u.Id == 2); // Je suis sur que User1 existe _context.Projets.Select(x => x.Users).ToList().Add(User1); // Je n'arrive pas à comprendre comment ici j'ajoute un élements à la collection d'Users contenu dans le DbSet Projet return View(); } Si j'ai un exemple qui marche je pourrais continuer sans probleme mais je n'arrive pas à trouver sur un internet cet exemple. Je vous remercie encore de votre aide.
Salam Abderrazzak, tu t'es inscrit à ma newsletter mais ton email n'est pas valide. Peux-tu ajouter une adresse mail, tu receveras un email après ton inscription et tu peux me contacter en répondant directement. Voici le lien: bit.ly/3hB5nUk Bien à toi, Meziane
Bonjour Rogeiro, merci pour la remarque. J'ai mis l'accent sur la partie Api Web en simplifiant la couche modèle. Je ferai une vidéo, je ne sais pas encore quand, sur Entity Framework Core avec plusieurs tables avec différentes relations: One to Many, Many to Many ...
Hello, voici le code de la méthode put : [HttpPut("{id}")] public async Task UpdateCourse(int id, Course newCourse) { if (!id.Equals(newCourse.Id)) { return BadRequest("IDs are different"); } var courseToUpdate = await _context.Courses.FindAsync(id); if (courseToUpdate == null) { return NotFound($"Course with Id = {id} not found"); } _context.Entry(courseToUpdate).State = EntityState.Detached; _context.Courses.Update(newCourse); await _context.SaveChangesAsync(); return NoContent(); } Pour tester au niveau de Postman, on met l'Id dans l'url et puis le cours à mettre à jour en tant que raw body de type JSON: Exemples: url: localhost:44389/api/Courses/1 Raw body : { "id": 1, "name": "SQL" }
Bonjour, Merci pour ton message. J'ai fait quelques vidéos pour débutant si c'est ton cas. Voici: - Introduction à la programmation en C# et .NET th-cam.com/video/5nvM1aUrZW0/w-d-xo.html - Programmation Orientée Objet en C# th-cam.com/video/3e70lP0KZ_Q/w-d-xo.html Je ferai d'autres vidéos qui abordent les bases. Je reste à ta disposition si tu as des questions. Meziane
Inscrivez-vous à ma Newsletter pour recevoir mes astuces et conseils sur la programmation en C#/.NET ...
Voici le formulaire d'inscription : bit.ly/3hB5nUk
Vraiment top, clair et très compréhensible. Tu penses faire une vidéo pour sécurisé l'API ?
Merci ! Je ferai une vidéo, je ne sais pas encore quand
Merci
Avec plaisir, merci pour ton message
Super vidéo !!!! mais comme l'a dit rogeiro, ce serait vraiment bien de refaire ça avec plusieurs tables
Merci !!! J'ai fait une vidéo sur Entity Framework Core avec trois tables: Many to Many et One to Many: th-cam.com/video/TZBW5-_-MfU/w-d-xo.html
J'ai bien noté votre suggestion.
@@meziane Merci ;)
C'est Top
Azul
Azul :)
bonjour Mr IEnumerable Get () veut signifier quoi ? c'est juste une énumération (IEnumerable) ou bien il y'a une autre explication a cela ?
Bonjour,
IEnumerable est une interface, les collections (Liste etc.) l’implémentent, ça nous donne la possibilité de les parcourir (peuvent être énumérées) avec par exemple la boucle “foreach”.
La méthode IEnumerable Get () peut retourner n’importe quelle collection qui implémente IEnumerable, par exemple List ...
Pour plus d’informations:
learn.microsoft.com/fr-fr/dotnet/api/system.collections.ienumerable?view=net-7.0
Bien à toi,
Bonjour, je suis blioqué au moment de la création de la base de données. Je n'ai pas le fichier Startup ? Merci
Bonjour,
Il n'y a pas de fichier Startup.cs dans la version .NET 6, désormais la configuration se trouve dans le fichier Program.cs.
J'ai ajouté une vidéo avec la version .NET 6 sur Entity Framework, j'ai utilisé le fichier Program.cs pour ajouter la configuration, tu peux la consulter : th-cam.com/video/alYmXFCCOmM/w-d-xo.htmlm29s
Bien à toi,
Bonjour merci beaucoup pour vos explications, svp j'ai suivi toutes les étapes mais un pb lors de la génération de la base de données, je reçois toujours cette erreur: ClientConnectionId:00000000-0000-0000-0000-000000000000
Error Number:-1,State:0,Class:20
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SNI_PN11, error: 26 - Error Locating Server/Instance Specified)
Bonjour,
Merci pour ton commentaire.
Conernant ta question : Entity Framework ne trouve pas ton serveur de base de données.As-tu installé SQL Server Express ? Si oui, est-ce que tu arrives à te connecter en utilisant SQL Server Management Studio.
Si ce n'est pas le cas, tu peux installer SQL Server Express et SQL Management Studio en utilisant ces liens :
- www.microsoft.com/fr-fr/sql-server/sql-server-downloads (tu peux choisir Express)
- docs.microsoft.com/fr-fr/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15
Si le problème persiste, pourrais-tu poster ta connectionString ?
Bien à toi,
bonjour;
pour créer un api asp .net core et le relier avec une base de données sql server existante, es que la migration est obligatoire?
Bonjour, on peut opter pour l'approche database first, on génère les classes modèle en utilisant la base de données existante. Tu peux apporter des modifications dans la db si nécessaire et regénérer le modèle. J'ai fait une vidéo qui explique comment le faire. Voicil le lien: th-cam.com/video/alYmXFCCOmM/w-d-xo.html
@@meziane merci
Autre chose, si mon API doit avoir du code Metier, est-ce que je créais un nouveau dossier que j'appel Metier ? Depuis mon contrôleur j'appel les fonctions de ma Class Metier correspondant au traitement ? Quel est la bonne pratique pour faire ça ? Ex : le client envoie des données qui doivent être calculer, ensuite le résultat je dois le save dans SQL puis retourner que tout c'est bien passé.
Si c'est un petit projet, tu peux créer comme tu dis un dossier qui contient ta classe ou plusieurs pour faire le traitement.Ensuite, tu ajoutes dans le contrôleur une propriété (de type : ta nouvelle classe) et tu l'injectes via le constructeur. Voici un tuto qui explique comment utiliser l'injection des dépendances : www.tutorialsteacher.com/core/dependency-injection-in-aspnet-core
Par contre, si c'est un projet complexe, il faut réfléchir à l'architecture au préalable. Généralement, on ajoute plusieurs projets à la même solution dans Visual Studio. Exemple de projets à ajouter dans la solution :
- Api web : Contrôleurs ...
- Une couche Modèle de type Class Library (bibliothèque de classes) qui contient les classes qui seront utilisées pour générer la base de données si on opte pour une stratégie Code-First avec Entity Framework.
- Une Couche Métier (Class Library) pour effectuer les traitements, accéder à d'autres web services et backends etc.
Le projet Api web utilisera les autres projets (couches) comme dépendances.
Bien à toi,
Très Bien !!
Mais tout ce que je ne comprends pas, la base des données devrait quand même existait bien avant !
Possible de refaire avec un BD qui existe au préalable ??
Bonjour,
Il y a deux approches: code first ou database first. Dans cet exemple, la base de données n'existe pas, mais on peut biensur avoir une base de données ensuite on génère nos classes J'ai fait une vidéo qui explique l'approche database first, ce n'est pas une API mais on peut utiliser la même approche dans une API en .NET. Voici le lien: th-cam.com/video/alYmXFCCOmM/w-d-xo.html
Merci pour ton message
Merci infiniment 🙏🙏🙏
Avec plaisir !
Bonjour Monsieur, j'ai cherché des heures mais je n'arrive pas a comprendre comment ajouter des elements dans la table d'association depuis un controleur (j'ai tjr une erreur du type : la classe n'a pas de key (j'ai creé une classe SchoolCourse), car effectivement cette table n'a pas d'identiifiant propre). Bref, comment faire pour ajouter une assoication dans la table d'association depuis un controleur. Merci bq de votre temps
Bonjour,
Pour ajouter des éléments dans la table d'association depuis un contrôleur, il faut tout simplement les ajouter dans la liste d'un objet puis le sauvegarder. Par exemple, si on a une relation many-to-many entre un cours et un étudiant, on peut créer un étudiant, puis mettre dans la liste des cours de de cet étudiant un nouveau cours. Quand on sauvegarde cet étudiant, Entity Framework va ajouter un élément dans la table d'association qui contiendra la clé de l'étudiant et la clé du cours.
On n'ajoute pas directement dans la table d'association, c'est Entity Framework qui génère la requête. On a pas besoin d'une classe d'association.
J'ai montré un exemple de many-to-many dans cette vidéo: th-cam.com/video/-tZLsJEEqeU/w-d-xo.html
Bien à toi,
@@meziane merci bq de votre réponse, c etait effectivement sur cette video que j avais pensé poster mon commentaire. Bonne soirée
@@Peacewalker73 avec plaisir. Merci, bonne soirée
@@meziane je vous dérange une derniere fois car j'ai essayé toute la matiné en vain d'ajouter un élement à la liste (la structure de mon code est identique a celle de votre video MVCSchool ou Student = User et Course = Projet. Je suis dans le ProjetController et voila à quoi j'ai aboutis (sans succes) :
[HttpPost]
[ValidateAntiForgeryToken]
public async Task AddProjectToUserr()
{
var User1 = _context.Users.FirstOrDefault(u => u.Id == 2);
// Je suis sur que User1 existe
_context.Projets.Select(x => x.Users).ToList().Add(User1);
// Je n'arrive pas à comprendre comment ici j'ajoute un élements à la collection d'Users contenu dans le DbSet Projet
return View();
}
Si j'ai un exemple qui marche je pourrais continuer sans probleme mais je n'arrive pas à trouver sur un internet cet exemple. Je vous remercie encore de votre aide.
@@Peacewalker73 Salut, j'ai bien lu ton message. Je te répondrai demain.
Bien à toi,
salam Mr Meziane
j utilise powerbuilder mais la sté appeon le proprietaire de powerbuilder a commencé à intégrer c# j aimerais vous contacter
Salam Abderrazzak, tu t'es inscrit à ma newsletter mais ton email n'est pas valide. Peux-tu ajouter une adresse mail, tu receveras un email après ton inscription et tu peux me contacter en répondant directement.
Voici le lien: bit.ly/3hB5nUk
Bien à toi,
Meziane
bonjour mezziane,c'est bien comme demo avec une seule table, pourquoi pas avec multiples table telles que, courss, professur...;;
Bonjour Rogeiro, merci pour la remarque. J'ai mis l'accent sur la partie Api Web en simplifiant la couche modèle. Je ferai une vidéo, je ne sais pas encore quand, sur Entity Framework Core avec plusieurs tables avec différentes relations: One to Many, Many to Many ...
hello possible d'avoir la méthode put (update) ?
Hello, voici le code de la méthode put :
[HttpPut("{id}")]
public async Task UpdateCourse(int id, Course newCourse)
{
if (!id.Equals(newCourse.Id))
{
return BadRequest("IDs are different");
}
var courseToUpdate = await _context.Courses.FindAsync(id);
if (courseToUpdate == null)
{
return NotFound($"Course with Id = {id} not found");
}
_context.Entry(courseToUpdate).State = EntityState.Detached;
_context.Courses.Update(newCourse);
await _context.SaveChangesAsync();
return NoContent();
}
Pour tester au niveau de Postman, on met l'Id dans l'url et puis le cours à mettre à jour en tant que raw body de type JSON:
Exemples:
url: localhost:44389/api/Courses/1
Raw body :
{
"id": 1,
"name": "SQL"
}
bonjour avais vous un contact svp
Bonjour Axel, Je viens de vous envoyer un email.
Bonjour Monsieur j'ai aimée votre vidéo mais je n'ai pas trop compris
Bonjour,
Merci pour ton message.
J'ai fait quelques vidéos pour débutant si c'est ton cas.
Voici:
- Introduction à la programmation en C# et .NET
th-cam.com/video/5nvM1aUrZW0/w-d-xo.html
- Programmation Orientée Objet en C# th-cam.com/video/3e70lP0KZ_Q/w-d-xo.html
Je ferai d'autres vidéos qui abordent les bases.
Je reste à ta disposition si tu as des questions.
Meziane
@@meziane merci
J’y reviendrai si j’ai des questions
@@daffnehandy4212 avec plaisir !
@@meziane Bonjour Mr ,ma part de base de donnée ne se crée pas dans le SGBD (SQL server)!! comme le votre ,mais tout mes GRUD fonctionne
On vous a jamais appris à creer la DAO avant les Controllers ? apparemment vous etes encore a la ramasse en France!