Quiero recorrer una colección de objetos y agregarlos a una tabla. La tabla de destino tiene un campo de incremento automático. Si agrego un solo objeto, no hay problema. Si agrego dos objetos con la clave principal de cero, el marco de la entidad falla. Puedo especificar manualmente las claves principales, pero el objetivo de probar el EF fue hacer la vida más fácil, no más complicada. Aquí está el código y la excepción recibida a continuación.Autonumérico con Entity Framework
foreach (Contact contact in contacts)
{
Instructor instructor = InstructorFromContact(contact);
context.AddToInstructors(instructor);
}
try
{
context.SaveChanges();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
El error es:
System.InvalidOperationException: Los cambios en la base de datos se cometieron con éxito, pero se ha producido un error al actualizar el contexto objeto. ObjectContext podría estar en un estado incoherente. Mensaje de excepción interno: los cambios de aceptación no pueden continuar porque los valores de las claves del objeto entran en conflicto con otro objeto en el ObjectStateManager. Asegúrese de que los valores clave sean únicos antes de llamando a AcceptChanges. en System.Data.Objects.ObjectContext.SaveChanges (opciones) SaveOptions
en System.Data.Objects.ObjectContext.SaveChanges() en DataMigration.Program.CopyInstructors() en C: \ Projects \ datamigration \ Program.cs : línea 52
supongo que si usted acaba de dejar el campo Autonumérico en blanco, la base de datos asignará uno para usted cuando confirme. –
Sí, funciona, agrega los registros y asignará claves principales, el problema es que no debería obtener una excepción para un escenario típico. Estoy seguro de que hay una forma 'correcta' de hacerlo dentro del marco, pero no estoy seguro de cómo. – dcompiled
Bueno, ahora la excepción dejó de ser arrojada después de que hice algunos cambios misceláneos en la tabla y actualicé el modelo. No estoy seguro de qué hizo la diferencia. Los únicos cambios que hice fueron agregar algunos valores predeterminados para las columnas y establecer esas columnas para que no sean nulas. No estoy convencido de que los cambios estén relacionados con la excepción. – dcompiled