visual tutorial studio mvc framework first existing español code c# entity-framework entity-framework-6

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; }