Estoy intentando aprender a usar el marco Entity pero he encontrado un problema que no puedo resolver. Lo que estoy haciendo es que estoy repasando una lista de películas que tengo e inserto cada una en una base de datos simple.InvalidOperationException al llamar a SaveChanges en .NET Entity framework
Este es el código que estoy usando
private void AddMovies(DirectoryInfo dir)
{
MovieEntities db = new MovieEntities();
foreach (DirectoryInfo d in dir.GetDirectories())
{
Movie m = new Movie { Name = d.Name, Path = dir.FullName };
db.AddToMovies(movie);
}
db.SaveChanges();
}
Cuando hago esto me da una excepción en db.SaveChanges() que leen.
Los cambios en la base de datos fueron cometido con éxito, pero se produjo un error al actualizar el objeto contexto. ObjectContext podría estar en un estado incoherente. Excepción interna mensaje: Aceptar cambios no puede continuar porque los valores clave del objeto entran en conflicto con otro objeto en ObjectStateManager. Asegúrese de que los valores de las claves sean únicos antes de llamar al AceptarCambios.
No he podido encontrar la causa de este problema. Mi tabla de base de datos contiene tres columnas
Id int autoincrement
Nombre nchar (255)
Ruta nchar (255)
Actualización: revisé mi archivo edmx y la sección SSDL tienen la StoreGeneratedPattern = "Identidad", como sugirió. También seguí la publicación del blog e intenté agregar ClientAutoGenerated = "true" y StoreGenerated = "true" en el CSDL como se sugiere allí. Esto dio como resultado errores de compilación (Error 5: el atributo 'ClientAutoGenerated' no está permitido). Como la publicación del blog es de 2006 y tiene un enlace a una publicación de seguimiento, asumo que ha sido modificada.
Sin embargo, no puedo leer la publicación de seguimiento ya que parece requerir una cuenta msdn.
La respuesta para mí fue establecer 'StoreGeneratedPattern =" Identity "' en la propiedad, [ver aquí para más detalles] (http://www.matthewedmondson.info/2012/09/entity-framework-and. html). –
También ocurre cuando utiliza asignaciones de SotredProcedure para INSERT, UPDATE, DELETE y su clave de ID es una clave calculada dentro del SP. –