2011-03-17 13 views
5

Después de ejecutar este código no encuentro entradas en mi base de datos. No recibo ningún error del código.C# Entitity framework SaveChanges() no funciona

¿Alguien sabe lo que estoy haciendo mal?

PeopleEntities1 db = new PeopleEntities1(); 


      Person roger = new Person() 
      { 
       age = 25, 
       firstname = "Roger", 
       lastname = "Rabbit", 
       location = "Canada", 
       job = "freelance", 


      }; 

      db.AddToPeople(roger); 
      db.SaveChanges(true); 
+2

¿Está utilizando SQL Server y, de ser así, ¿Puede ejecutar SQL Profiler y ver qué se está ejecutando contra la base de datos? –

+1

¿Cuál es la ubicación de su base de datos? Asegúrate de que no lo estás copiando a tu directorio de salida cada vez que ejecutas tu código. Pude haber tenido un problema similar con una base de datos SQLite que se copiaba al directorio de salida cada vez que ejecutaba mi aplicación, lo que me hizo perder los cambios que había hecho durante la ejecución anterior. –

+0

Esto es exactamente lo que está sucediendo; Creo la base de datos en el directorio del proyecto, pero cuando se ejecuta, vuelve a crear el archivo db en el directorio bin. – Roge

Respuesta

4

¿Cuál es la ubicación de su base de datos? Asegúrate de que no lo estás copiando a tu directorio de salida cada vez que ejecutas tu código. Pude haber tenido un problema similar con una base de datos SQLite que se copió en el directorio de salida cada vez que ejecuté mi aplicación, lo que me hizo perder los cambios que había hecho durante la ejecución anterior

+1

Creé una aplicación de consola C# estándar en 2010 Express, utilicé los asistentes para crear un archivo sql express db simple que se coloca en el directorio del proyecto, usé los asistentes para generar datos de una entidad modelo basado en el db recién creado, escribió algunas líneas para probar la entidad. El problema es que cada vez que ejecuto la aplicación, recrea el archivo de base de datos en cualquier directorio donde se ejecute el exe cada vez e ignora por completo el archivo db original que se encuentra en el directorio de proyecto – Roge

+1

¿Cuál es la solución? –

1

En lugar de db.AddToPeople(), tratan db.People.Add().

Además, ajuste una instrucción using alrededor de la variable db para asegurarse de que el contexto y la conexión se eliminen correctamente.

Esto es para EF4 y .NET 4.0.

Suponiendo que tiene una lista llamada Configuración de personas.

Espero que esto ayude! :)

Aquí está el código:

using (PeopleEntities1 db = new PeopleEntities1()) 
{ 


      Person roger = new Person() 
      { 
       age = 25, 
       firstname = "Roger", 
       lastname = "Rabbit", 
       location = "Canada", 
       job = "freelance", 


      }; 

      db.People.Add(roger); 
      db.SaveChanges(true); 
} 
+0

Parece que no tengo un método db.People.Add(); Por cierto, utilicé el asistente para crear mi clase de entidad desde un DB. – Roge

+0

Ok, dependiendo de la pluralización, puede tener db.Persons – Russell

+0

Lo más parecido que tengo es db.People.AddObject; Esto da el mismo resultado que db.AddToPeople(), se ejecuta sin errores pero sin entradas en DB. – Roge

1

En primer lugar, SaveChanges(true) es un método obsoleto, así que no recomendaría el uso de la misma. ¿Has intentado simplemente usar SaveChanges()? Al igual que en db.SaveChanges()

El método más cercana a SaveChanges(boolean) es SaveChanges(SaveOptions) que persiste todos los cambios a la fuente de datos con la SaveOptions especificado.

+0

Sí, he intentado usar SaveChanges() sin el parámetro. – Roge

+0

es obsoleto pero aún así es compatible y debería funcionar – BrokenGlass

+0

Tu comentario original probablemente sea el correcto: necesita ejecutar el generador de perfiles, y ver * exactamente * con qué DB se está ejecutando. Apuesto a que tiene sus cadenas de conexión mezcladas –

Cuestiones relacionadas