Bonsoir,
Dans mon projet asp.net mvc 2, je dois récupérer les données d'un fichier Excel et les insérer dans une base sql server.
Pour mes accès aux données, j'ai suivi le modele du projet IComplain http://icomplain.codeplex.com/
Ci joint, le code pour le repository qu on trouve dans le projet IComplain
Jusque la pas de problème d'implémentation.
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 public abstract class BaseRepository<T> where T : class, new() { private SGDEntities _objCtx; protected internal SGDEntities ObjectContext { get { if (_objCtx != null) return _objCtx; if (ObjectContextScope<SGDEntities>.CurrentObjectContext != null) return ObjectContextScope<SGDEntities>.CurrentObjectContext; new ObjectContextScope<SGDEntities>(); return ObjectContextScope<SGDEntities>.CurrentObjectContext; } } protected BaseRepository() { } protected BaseRepository(SGDEntities context) { _objCtx = context; } public void Update(T dto) { try { ObjectContext.SaveChanges(); } catch (OptimisticConcurrencyException) { System.Diagnostics.Debug.WriteLine("OptimisticConcurrencyException occurred, " + "attempting to resolve ..."); ObjectContext.Refresh(RefreshMode.StoreWins, dto); ObjectContext.SaveChanges(); System.Diagnostics.Debug.WriteLine("Concurrency confliction resolved."); } catch (SqlException se) { throw new ApplicationException("An exception occurred while saving your changes", se); } catch (Exception ex) { throw new ApplicationException("An exception occurred while saving your changes", ex); } } public void Delete(T dto) { ObjectContext.DeleteObject(dto); Update(dto); } protected virtual IQueryable<T> LoadResult(IQueryable<T> result, int loadOption) { throw new NotImplementedException(); } }
J'ai créé ensuite une entité qui va faire la liaison entre ce que je récupère du fichier Excel et l'entité de ma bdd
Pourtant lorsque j'essaie de rajouter à la base j'ai l'erreur erreurs suivantes :
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 public void CreateOrUpdate(SGDChangement changementSGD) { var sgd = FindUniqueSGDByName(changementSGD.NumSGD); //le numéro SGD existe en Base try { if (sgd != null) { sgd.IssueDate = changementSGD.IssueDate; sgd.Applicant = changementSGD.Applicant; sgd.Beneficiary = changementSGD.Beneficiary; sgd.BeneficiaryEntity = changementSGD.BeneficiaryEntity; sgd.Description = changementSGD.Description; sgd.PlannedDate = changementSGD.PlannedDate; sgd.Description = "test"; Update(sgd); } else { Create(changementSGD); } } catch (Exception exp) { throw exp; } }Je me suis dit que ca venait d'un champ description et j'avais raison ... donc j'ai tenté de faire un traitement en retirant les \n \t etc etc mais rien à faire, je ne peux pas l'insérer.et je n'arrive pas à voir quel caractère pourrait poser problème. Surtout que dans mes TU, si je copie colle la chaîne de caractère, je n'ai pas de soucisString or binary data would be truncated. The statement has been terminated
Mon 2e problème vient de la mise à jour... encore une fois, aucun problème quand je fais lance la méthode en TU.
Mais quand je passe par l'intégration de la méthode, l'exception suivante m'est retournéeet pourtant je ne crée pas une nouvelle ligne comme il a trouvé ma ligne juste avant (je l'ai vérifié) ...Violation of PRIMARY KEY constraint ...
Une idée ?
Merci !
Partager