Bonjour,

Voilà je travaille sur un projet qui doit partir d'un fichier Xls (excel.xls) et l'importer en DB MySQL.
J'utilise LinqToEntity pour l'importation et la lecture.

J'ai déjà réussi à lire le fichier Xls et à l'importer dans un DataTable que je passe en paramètre à une méthode pour les différents inserts.

J'insère le fichier Xls en plusieurs fois

Les étudiants :

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
 
public static bool InsertEtudiant(DataTable dt)
        {
            using (var ctx = new ModelEntities())
            {
                // query xls file
                var query = (from r in dt.AsEnumerable()
                             select new 
                             { 
                                 id = r.Field<double>("Matric Info"), 
                                 nom = r.Field<string>("Nom Elève"), 
                                 pren = r.Field<string>("Prénom Elève"), 
                                 cla = r.Field<string>("AnFF_Classe") 
                             }).Distinct();
                if (query.Any())
                    foreach (var result in query)
                    {
                        // Create a new classe
                        etudiant etu = new etudiant() 
                        { 
                            Id = Convert.ToInt32(result.id), 
                            Nom = result.nom, 
                            Prenom = result.pren, 
                            Fk_Classe = result.cla
                        };
                        ctx.etudiant.AddObject(etu);
                    }
                try
                {
                    ctx.SaveChanges();
                    return true;
                }
                catch { return false; }
            }
        }
les groupes
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
46
47
48
49
50
51
 
public static bool InsertGroupe(DataTable dt)
        {
            using (var ctx = new ModelEntities())
            {
                int temp1 = 0;
                int temp2 = 0;
                // query xls file
                var query = (from r in dt.AsEnumerable()
                             select new
                             {
                                 id = r.Field<string>("AnFF1"),
                                 ann = r.Field<string>("AnFF"),
                                 prof = r.Field<string>("Prof Cours"),
                                 crs = r.Field<string>("Lib Cours")
                             }).Distinct();
                if (query.Any())
                    foreach (var result in query)
                    {
                        // Get id prof
                        var queryPro = from pro in ctx.prof
                                       where pro.Nom == result.prof
                                       select pro.Id;
                        foreach (var pro in queryPro)
                           temp1 = Convert.ToInt32(pro);
 
                        // Get id Branche
                        var queryBra = from bra in ctx.branche
                                       where bra.Nom == result.crs
                                       select bra.Id;
                        foreach (var bra in queryBra)
                            temp2 = Convert.ToInt32(bra);
 
                        // Create a new groupe
                        groupe grp = new groupe()
                        {
                            Id = result.id,
                            Fk_Annee = result.ann,
                            Fk_Prof = temp1,
                            Fk_Branche = temp2
                        };
                        ctx.groupe.AddObject(grp);
                    }
                try
                {
                    ctx.SaveChanges();
                    return true;
                }
                catch { return false; }
            }
        }
Ca ca fonctionne bien insertion ok toutes les données nécessaires se trouvent en DB.
Là ou ca coince c'est quand je veux dire quel étudiant est dans quel groupe, soit la table Fk_Etudiant - Fk_Groupe (les clés des deux tables précédantes).

Je ne sais pas faire comme précédemment puisque dans le edmx, la table n'est pas présente (relation n-n).

Quelqu'un aurait-il une solution ?
Dois-je continuer d'inserer en étapes ou est-ce possible d'inserer tout le fichier en une fois, si oui comment ?

D'avance merci,
Nabu