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 :

Wpf and Entity framework


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Dev
    Inscrit en
    Juillet 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2
    Par défaut Wpf and Entity framework
    Bonsoir,

    Je suis entrain de développer une application WPF. J'utilise Entity Framework code first pour créer ma base de données de type One to Many.
    Ensuite j'affiche le contenu de ma base dans deux datagrid. Pour enrichir ma base j'importe des données depuis un fichier Excel. j'arrive à faire l'import mais ensuite je ne sais pas comment faire pour sauvegarder ces données dans ma base.

    Voici mon code.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
            private void ImportCommand_Executed(object sender, ExecutedRoutedEventArgs e)
            {
                var matrixOccupanciesViewSource = ((CollectionViewSource)(this.FindResource("matrixOccupanciesViewSource")));
     
     
                OpenFileDialog openDialog = new OpenFileDialog();
     
                // Show open file dialog box
                Nullable<bool> result = openDialog.ShowDialog();
     
                if (result == true)
                {
                    string path = System.IO.Path.GetFullPath(openDialog.FileName);
                    string query = "SELECT * FROM [A$]";
     
                    OleDbConnection conn = new OleDbConnection();
                    conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
                    @"Data Source=" + path +";" +
                    "Extended Properties=Excel 8.0;";
     
                    OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn);
                    DataTable data = new DataTable();
     
                    adapter.Fill(data);
     
     
                    matrixOccupanciesViewSource.Source = data;
     
                }
     
     
            }
     
            #endregion
     
            private void matrixDataGrid_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
            {
                var selectedDate = (Matrix)e.AddedItems[0];
     
                var occupenciesCollection = selectedDate.Occupancies;
     
                var occupanciesViewSource = ((CollectionViewSource)(this.FindResource("matrixOccupanciesViewSource")));
     
                occupanciesViewSource.Source = occupenciesCollection;
            }

    Par avance, merci.

  2. #2
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    En gros tu vas devoir, pour chaque ligne de ton fichier excell, créer une entité et copier les champs dedans. A la main, il n'y a rien d'automatique (à ma connaissance). Puis sauver ton EF context.

  3. #3
    Candidat au Club
    Profil pro
    Dev
    Inscrit en
    Juillet 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2
    Par défaut
    Bonjour GuruuMeditation,

    Merci pour ta réponse.
    Je parcours mon DataSet et pour chaque ligne j’instancie une nouvelle entité.

    Mais ensuite comment faire pour ajouter tout ça au _context pour pouvoir faire une sauvegarde dans la base de données ?

  4. #4
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Tu dois faire un truc style (remplacer MyContext et MyTable,... par tes classe context et table):

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    using(var context = new MyContext())
      {
       foreach (var excelldata in ExcellTable)
       {
          // cree ton entité à partir des données Excell
          context.MyTable.Add(entite);
       }
     
        context.SaveChanges();
     
      }

  5. #5
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Ce que tu peux faire, c'est ajouter les entités dans une liste dans ton importcommand (TheItemSource étant une List<MonEntite>) :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     foreach (DataRow row in data.Tables[0].Rows)
                {
                    //MessageBox.Show(row["Date"].ToString());
     
                   TheItemSource.Add(new Occupancy() { Date = (DateTime)row["Date"], State = row["Situation"].ToString(), Turnover = (double)row[3] });
     
                }

    Puis, dans le click du bouton :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private void Button_Click_1(object sender, RoutedEventArgs e)
            {
     
                using (var context = new Model1Container())
                {
                    foreach (var entity in TheItemSource)
                    {
                        context.TheEntitySet.Add(entity);
                    }
     
                    context.SaveChanges();
                }
            }

    Peut-être pas la plus belle solution possible, mais elle est simple et ça marche.

Discussions similaires

  1. [Débutant] Lier un Combobox (WPF) avec Entity Framework
    Par say_if dans le forum Entity Framework
    Réponses: 1
    Dernier message: 18/07/2013, 16h13
  2. Réponses: 2
    Dernier message: 01/03/2010, 21h32
  3. Réponses: 3
    Dernier message: 22/09/2009, 11h41
  4. Pertes de binding via Entity Framework + WPF +WCF
    Par GTSLASH dans le forum Services Web
    Réponses: 4
    Dernier message: 12/08/2009, 10h17

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