Para actualizar una entidad con Entity Framework Core, este es el proceso lógico:
- Crear instancia para
DbContext
clase
- Recuperar entidad por clave
- Realizar cambios en las propiedades de la entidad
- Guardar cambios
Update()
método en DbContext
:
Comienza a rastrear la entidad dada en el estado Modificado de modo que se actualizará en la base de datos cuando SaveChanges()
se llame.
El método de actualización no guarda los cambios en la base de datos; en su lugar, establece estados para las entradas en la instancia de DbContext.
Entonces, podemos invocar el Update()
método antes para guardar los cambios en la base de datos.
Asumiré algunas definiciones de objetos para responder a su pregunta:
El nombre de la base de datos es Store
El nombre de la tabla es Producto
Definición de clase de producto:
public class Product
{
public int? ProductID { get; set; }
public string ProductName { get; set; }
public string Description { get; set; }
public decimal? UnitPrice { get; set; }
}
Definición de la clase DbContext:
public class StoreDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Your Connection String");
base.OnConfiguring(optionsBuilder);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Order>(entity =>
{
entity.HasKey(p => p.ProductID);
});
base.OnModelCreating(modelBuilder);
}
}
Lógica para actualizar entidad:
using (var context = new StoreDbContext())
{
var entity = context.Products.FirstOrDefault(item => item.ProductID == id);
if (entity != null)
{
entity.UnitPrice = 49.99m;
entity.Description = "Collector's edition";
context.SaveChanges();
}
}