c# - tutorial - Guardar entidad separada en Entity Framework 6
entity framework visual studio 2017 (1)
He leído MUCHAS publicaciones sobre cómo salvar una entidad separada en Entity Framework. Todos ellos parecen aplicarse a las versiones anteriores de Entity Framework. Hacen referencia a métodos como ApplyCurrentValues y ChangeObjectState que parecen no existir. Por un capricho decidí probar un método que encontré a través de intellisense y quiero asegurarme de que esta es la forma correcta de hacerlo, ya que no puedo ver lo que ocurre detrás de escena:
public void SaveOrder(Order order)
{
using (VirtualWebEntities db = new VirtualWebEntities())
{
db.Orders.Attach(order);
db.Entry(order).State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();
}
}
¿Es esta la forma correcta de actualizar un elemento existente que se modificó?
Si eso es correcto. Este artículo describe varias formas de agregar y unir entidades , y proporciona este ejemplo:
var existingBlog = new Blog { BlogId = 1, Name = "ADO.NET Blog" };
using (var context = new BloggingContext())
{
// The next step implicitly attaches the entity
context.Entry(existingBlog).State = EntityState.Modified;
// Do some more work...
context.SaveChanges();
}
Como EF no sabe qué propiedades son diferentes de las de la base de datos, las actualizará todas:
Cuando cambie el estado a Modificado, todas las propiedades de la entidad se marcarán como modificadas y todos los valores de las propiedades se enviarán a la base de datos cuando se llame a SaveChanges.
Para evitar esto, puede establecer qué propiedades se modifican manualmente en lugar de establecer todo el estado de la entidad:
using (var context = new BloggingContext())
{
var blog = context.Blogs.Find(1);
context.Entry(blog).Property(u => u.Name).IsModified = true;
// Use a string for the property name
context.Entry(blog).Property("Name").IsModified = true;
}