在 Entity Framework Core 中更新数据库表数据的最佳方法是什么?

  • 检索表行,进行更改并保存
  • 使用关键字 在 DB 上下文中更新 并处理项目不存在的异常

  • 我们可以在 EF6 上使用哪些改进功能?

    最佳答案

    要使用 Entity Framework Core 更新实体,这是逻辑过程:

  • DbContext 类创建实例
  • 通过key
  • 检索实体
  • 更改实体的属性
  • 保存更改
  • Update() 方法在 DbContext 中:

    Update 方法不会保存数据库中的更改;相反,它为 DbContext 实例中的条目设置状态。
    因此,我们可以在保存数据库更改之前调用 Update() 方法。
    我将假设一些对象定义来回答您的问题:
  • 数据库名称为 Store
  • 表名是产品

  • 产品类别定义:
    public class Product
    {
        public int? ProductID { get; set; }
    
        public string ProductName { get; set; }
    
        public string Description { get; set; }
    
        public decimal? UnitPrice { get; set; }
    }
    
    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 =>
            {
                // Set key for entity
                entity.HasKey(p => p.ProductID);
            });
    
            base.OnModelCreating(modelBuilder);
        }
    }
    
    更新实体的逻辑:
    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();
            }
    }
    

    关于entity-framework-6 - 如何使用 Entity Framework Core 更新记录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46657813/

    10-16 06:11