ASP.NET - Guardar varios registros usando foreach

 
Vista:

Guardar varios registros usando foreach

Publicado por sandrita (1 intervención) el 03/12/2012 04:30:55
Hola de nuevo, recien me inicio en MVC

Estoy recuperando en dos vectores varios registros y debo guardarlos en una base de datos (en una sola tabla)

entonces pienso que puedo guardar, recorriendo el vector con un foreach y en cada iteracion guardar el registro en la base de datos.

Pero el primer registro me guarda bien y para el segundo me sale el error

System.InvalidOperationException: Ya existe un objeto con la misma clave en ObjectStateManager. El objeto existente se encuentra en un estado Modified. Sólo es posible agregar un objeto a ObjectStateManager de nuevo si se encuentra en un estado agregado. en System.Data.Objects.ObjectContext.VerifyRootForAdd(Boolean doAttach, String entitySetName, IEntityWrapper wrappedEntity, EntityEntry existingEntry, EntitySet& entitySet, Boolean& isNoOperation) .

les paso la accion post del controlador


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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
[
 
HttpPost]
 
 
 
 
publicActionResultCrearNotaEstudiantesGlobal(Notanota, FormCollectionform)
 
 
        {
 
 
 
try
 
 
 
            {
 
 
 
stringtags1 = form["CodigoEstudiantes"];
 
 
 
 
char[] delimitadores1 = { ' ', ',', '.', ';'};
 
 
 
 
string[] TagsString1 = tags1.Split(delimitadores1);
 
 
 
 
/* foreach (String tagtexto1 in TagsString1)


                {                   

                        nota.Nota1 = Convert.ToDecimal(tagtexto1);

                }*/
 
 
 
 
intrecorrer = 0;
 
 
 
 
stringtags = form["NotaPrimero"];
 
 
 
 
char[] delimitadores = { ' ', ',', '.', ';'};
 
 
 
 
string[] TagsString = tags.Split(delimitadores);
 
 
 
 
//List<Nota> notas = new List<Nota>();
 
 
 
 
 
//if (ModelState.IsValid)
 
 
 
 
 
//{
 
 
 
 
 
foreach(Stringtagtexto inTagsString)
 
 
                    {
 
 
 
                        nota.CodigoEstudiante = TagsString1[recorrer].ToString();
 
                        nota.CodigoMateria = materiaid;
 
                        nota.Trimestre = 1;
 
                        nota.Nota1 =
 
Convert.ToDecimal(tagtexto);
 
 
 
 
//      notas.Add(nota);
 
 
 
                        db.Nota.AddObject(nota);
 
                        db.SaveChanges();
 
                        recorrer++;
 
                    }
 
 
 
//db.SaveChanges();
 
 
 
 
 
//  }
 
 
 
 
 
returnRedirectToAction("EstudiantesCurso", new{ CursoID = cursoid, MateriaID = materiaid });
 
 
 
}
 
 
 
catch(Exceptione)
 
{
 
 
 
//Si se introduce un error de direccion http no existente, devolvemos a la vista el error generado
 
 
                ViewData[
 
"msg"] = e;
 
 
 
//ViewData["msg"] = "Se ha producido un error en el registro.";
 
 
 
 
returnView("Error");
 
            }
 
&#12288;
 
        }



en TagsString1 recupero los codigos del estudiante

y en TagsString las notas.

Con el foreach recorro los 2 vectores y los resultados que me den, los guardo, pero solo me guarda un registro. AYUDA!!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder