34

Bien, entonces soy nuevo en EF y LINQ. He descubierto cómo INSERTAR y ELIMINAR pero, por alguna razón, la ACTUALIZACIÓN parece escapar de mi alcance.LINQ to Entities cómo actualizar un registro

Aquí es una muestra de mi código:

EntityDB dataBase = new EntityDB(); 
Customer c = new Customer 
{ 
    Name = "Test", 
    Gender = "Male 
}; 
dataBase.Customers.AddObject(c); 
dataBase.SaveChanges(); 

Lo anterior crea y añade un registro muy bien.

Customer c = (from x in dataBase.Customers 
      where x.Name == "Test" 
      selext x).First(); 
dataBase.Customers.DeleteObject(c); 
dataBase.SaveChanges(); 

Lo anterior elimina efectivamente el registro especificado.

¿Cómo actualizo? Parece que no puedo encontrar un método "UpdateObject()" en la colección de entidades.

+0

Si está utilizando EF4, prefiero esta solución http://stackoverflow.com/questions/623672/update-entity-framework-objects –

Respuesta

73

Sólo modificar una de las entidades devueltos:

Customer c = (from x in dataBase.Customers 
      where x.Name == "Test" 
      select x).First(); 
c.Name = "New Name"; 
dataBase.SaveChanges(); 

Nota, sólo se puede actualizar una entidad (algo que se extiende EntityObject, no es algo que se ha proyectado usando algo como select new CustomObject{Name = x.Name}

+0

lo hice ese. Por alguna razón, no persiste los cambios en la base de datos. – Chev

+1

No importa. Eso funciono. Estaba viendo los datos equivocados. – Chev

+0

@Chevex: Pero tenga en cuenta que se involucra mucho más cuando se usa otra instancia de contexto. –

3

Ambos pista los cambios en la colección, así llaman los SaveChanges() que debe actualizar la base de datos.

6

// para la actualización

(from x in dataBase.Customers 
     where x.Name == "Test" 
     select x).ToList().ForEach(xx => xx.Name="New Name"); 

// para borrar

dataBase.Customers.RemoveAll(x=>x.Name=="Name"); 
Cuestiones relacionadas