IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Insérer des données dans une base de donnée [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 4
    Par défaut Insérer des données dans une base de donnée
    Bonjour,

    je suis en grosse galère.

    j'ai créé une petite base de donnée (je donnerai plus d'info si besoin, je veux pas surcharger mon post en info inutiles) et je souhaite ajouter des données vers cette base en CodeFirst, mais impossible d'y arriver.

    Est ce qu'il faut utiliser du c#, du sql, je suis complètement perdu, et je ne trouve nulle part de réponse à mes questions.

    quel code écrire pour y arriver ? sachant que j'ai crée mon DbContext, les DbSet et les classes représentant les tables avec leurs propriétés

    merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur .Net
    Inscrit en
    Décembre 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 71
    Par défaut
    Salut,

    Si tu es totalement débutant en EF et EF Code First je te conseille de lire le petit tutoriel disponible sur developpez.net : http://reward.developpez.com/tutorie...he-code-first/

    Ensuite, les DbSet hérite de DbQuery qui hérite elle même IOrderedQueryable, IQueryable, IEnumerable, IListSource, IDbAsyncEnumerable.

    Tu remarquera que IEnumerable est présent, donc DbSet se comporte comme un Enumerable/Collection.

    Donc pour faire des manipulations dans ta BDD, tu va utiliser simplement du C#.

    Exemple pour un DBSet nommé User:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    using(var context = new DbContext()){
    context.User.Add(new User { UserName = "Toto", Password = "Azerty123*"});
    context.SaveChanges();
    }
    Ce bout de code ajoute un utilisateur au DbSet User et sauvegarde les changements dans la table.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 4
    Par défaut
    merci pour ta réponse.

    pas de problème avec les deux dernières lignes, mais je ne comprends pas la première

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using(var context = new DbContext()){
    que signifie le using ?

    pourquoi faut-il créer un nouveau DbContext ici ? je demande car pour moi j'en ai déjà créé un.

    je vais mettre le code que j'ai crée, désolé si ca fait lourd (en meme temps c'est pas du code très compliqué ) mais ca sera plus clair pour moi, tu pourras me dire plus précisément ou je me plante peut être (j'espère)

    c'est une Bdd toute simple de liste de course avec deux tables :

    un pour les produits :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        public class Produit
        {
            public int Id { get; set; }
            public string NomProduit { get; set; }
            public string RayonMagasin { get; set; }
        }

    ici j'ai créé ma classe qui hérite de DbContext

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    public class ListedeCourseContext : DbContext
        {
            public DbSet<Produit> Produits { get; set; }
            public DbSet<Rayon> Rayons { get; set; }
     
            public ListedeCourseContext()
                : base("name=DefaultConnection")
            {
            }
     
     
        }
    et enfin mon prg ou j'instancie mes deux tables et ou j'appelle la méthode que j'essaie de créer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
        class Program
        {
            public static void Main(string[] args)
            {
                var tableProduit = new Produit();
                var tableRayon = new Rayon();
     
                Console.WriteLine("Veuillez choisir une action");
                Console.WriteLine("1.Créer une nouveau produit");
                Console.WriteLine("2.Créer un nouveau rayon");
                var choix = Console.ReadLine();
                if (choix == "2")
                {
                    tableRayon.CreerRayon("Fruit et légume");
     
                }
            }
        }
    et enfin la classe rayons. c'est ici que j'aimerai créer une méthode qui me permette d'ajouter un rayon a partir de la console, mais c'est la que je bloque

    je voudrai écrire un truc du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableProduit.Nomrayon = nom
    Mais je n'ai pas accès à tableRayon depuis cette classe...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        public class Rayon
        {
            public int Id { get; set; }
            public string NomRayon { get; set; }
            public IList<Produit> ProduitsRayon { get; set; }
     
            public void CreerRayon(string nom)
            {
     
                Console.WriteLine("Le rayon " + nom + "a été crée");
                Console.ReadKey();
            }
        }
    si tu pouvais m'aider (toi ou quelqu'un d'autre) ca serait super.

    EDIT : je suis en train de lire le tutoriel que tu m'as envoyé, et je vois que les classes sont dans des fichier .DTO. Je n'ai pas créé mes classes la dedans. C'est grave ou c'est parce que mes version d'entity Framework, visual studio etc n'ont plus besoin de ca ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur .Net
    Inscrit en
    Décembre 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 71
    Par défaut
    Un peux de doc sur le mot clef Using : https://docs.microsoft.com/fr-fr/dot...sing-statement

    pourquoi faut-il créer un nouveau DbContext ici ? je demande car pour moi j'en ai déjà créé un.
    Tu n'a pas besoin de créer autre choses, comme je n'avais pas ton code j'ai fait un exemple.
    D'ailleurs ici dans mon exemple je ne le créé pas, je l'instancie, c'est pour pouvoir utiliser toutes les fonctions de EF et lire/stocker mes informations en base.

    Pour créer un rayon tu doit faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     public void CreerRayon(string nom)
            {
     
                using(var context = new DbContext()){
                   context.Rayons.Add(new User {  NomRayon = nom }); // Tu ajoute un nouveau rayon à ton DbSet
                   context.SaveChanges(); // tu sauvegarde les changement en bdd
                }
                Console.WriteLine("Le rayon " + nom + "a été crée");
                Console.ReadKey();
            }

    je suis en train de lire le tutoriel que tu m'as envoyé, et je vois que les classes sont dans des fichier .DTO. Je n'ai pas créé mes classes la dedans. C'est grave ou c'est parce que mes version d'entity Framework, visual studio etc n'ont plus besoin de ca ?
    Effectivement EF a changé depuis ce tutoriel. Regarde surtout les manipulations plus que la mise en place.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class Produit
        {
            public int Id { get; set; }
            public string NomProduit { get; set; }
            public string RayonMagasin { get; set; }
        }

    Foreign Key dans la classe Produit :

    Si tu veux faire un lien vers le rayon ici tu devrais plutôt faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Produit
        {
            public int Id { get; set; }
            public string NomProduit { get; set; }
            public int RayonId{ get; set; }
            public Rayon Rayon {get; set; }
        }
    Plus d'information dans la documentation : http://www.entityframeworktutorial.n...ode-first.aspx

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2017
    Messages : 4
    Par défaut
    ca maaaaaarche lol je fais une danse de la joie.

    bon j'ai galéré un peu parce que j'avais fait un copié collé de ton code et j'ai du changer quelques termes (dbcontext et user) mais ensuite ca a fonctionné nickel.

    Merci 5000 fois, j'ai galéré pendant 2 jours à trouver une solution, j'aurais du venir sur le forum plus rapidement.

    Du coup je me permettrait de remettre un post si j'ai d'autres problèmes dans le futur

    merci encore

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur .Net
    Inscrit en
    Décembre 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 71
    Par défaut
    De rien

    Essaye de mettre en favoris les liens de la documentation que tu as besoin. Tu va finir par t'habituer et trouver les informations simples tout seul.
    Après parfois on bloque totalement et un petit coup de main et toujours le bienvenue ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. inserer les données d'une base de données dans une autres?
    Par enstein8 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 14/10/2011, 13h33
  2. Réponses: 19
    Dernier message: 08/11/2010, 10h06
  3. Réponses: 5
    Dernier message: 10/01/2008, 08h47
  4. insérer des tables dans une base de données oracle
    Par Spacy_green dans le forum Oracle
    Réponses: 3
    Dernier message: 16/03/2007, 11h23
  5. insérer des élément dans une base de donné
    Par wiss20000 dans le forum JDBC
    Réponses: 5
    Dernier message: 01/03/2007, 14h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo