1 pièce(s) jointe(s)
Insert en DB à partir d'Xls
Bonjour,
Voilà je travaille sur un projet qui doit partir d'un fichier Xls (Pièce jointe 79475) 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:
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:
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