What is the best approach to update database table data in Entity Framework Core?
What are the improved features we can use over EF6?
To update an entity with Entity Framework Core, this is the logical process:
DbContext
classUpdate()
method in DbContext
:
Begins tracking the given entity in the Modified state such that it will be updated in the database when
SaveChanges()
is called.
Update method doesn't save changes in database; instead, it sets states for entries in DbContext instance.
So, We can invoke Update()
method before to save changes in database.
I'll assume some object definitions to answer your question:
Database name is Store
Table name is Product
Product class definition:
public class Product { public int? ProductID { get; set; } public string ProductName { get; set; } public string Description { get; set; } public decimal? UnitPrice { get; set; } }
DbContext class definition:
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 => { // Set key for entity entity.HasKey(p => p.ProductID); }); base.OnModelCreating(modelBuilder); } }
Logic to update entity:
using (var context = new StoreDbContext()) { // Retrieve entity by id // Answer for question #1 var entity = context.Products.FirstOrDefault(item => item.ProductID == id); // Validate entity is not null if (entity != null) { // Answer for question #2 // Make changes on entity entity.UnitPrice = 49.99m; entity.Description = "Collector's edition"; /* If the entry is being tracked, then invoking update API is not needed. The API only needs to be invoked if the entry was not tracked. https://www.learnentityframeworkcore.com/dbcontext/modifying-data */ // context.Products.Update(entity); // Save changes in database context.SaveChanges(); } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With