如何在 Blazor 应用程序中使用 MVVM 和 EF Core 仅更新更改字段?

问题描述

我有一个以 EF Core 作为数据访问层的 blazor 服务器应用。

  1. 用户访问页面时,我从 DbContext 加载实体,用数据填充 VM 并处理数据库上下文。

    using var dbContext = DbContextFactory.CreateDbContext();
    var entity = dbContext.Products.Find(Id);
    viewmodel = new viewmodel { Id = entity.Id,Name = entity.Name.. }
    
  2. 用户单击“保存”按钮时,我再次从新的 DbContext 实例加载实体,将所有可编辑字段从 VM 复制到实体并调用 DbContext.SaveChanges。

    using var dbContext = DbContextFactory.CreateDbContext();
    var entity = dbContext.Products.Find(Id);
    entity.Name = viewmodel.Name; .....
    dbContext.SaveChanges();
    

我想避免将所有字段从虚拟机复制到实体,因为它会同时覆盖对数据库所做的所有更改。 我只想更新用户编辑的字段

viewmodel 中实现更改跟踪,尤其是在更复杂的层次结构中是一项非常重要的任务。

如何在 Blazor 应用中有效地执行此操作?尤其是没有不必要的 DRY 违规。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)