【发布时间】:2016-08-19 21:26:52
【问题描述】:
我只是想知道是否有一种方法可以更新 SQL 行中的每个字段/属性,而无需为每个字段声明显式的“context.FieldName = model.FieldName”。
我尝试做的是:
- 将更新后的模型对象传递给方法。
- 根据模型对象的 ID 从 db 上下文中获取 DTO 对象
- 如果不为 null,则使用 AutoMapper 将模型对象转换为 DTO 对象
- 现在将原始 DTO 对象设置为新映射的 DTO 对象
- 更新数据库(这是失败的地方)
- 保存上下文
但是,如果我将每个 DTO 字段 = 明确设置为其相应的模型字段,它就可以工作(显然)。但是由于频繁的数据库更改,以及大量的 SQL 字段,我希望避免在每次数据库更改时手动更新每个字段并维护它。
【问题讨论】:
-
您可以将模型对象映射到数据传输对象,然后将此对象附加到上下文中,处于已修改状态:
dbContext.Entry(dto).State = EntityState.Modified;
标签: c# asp.net sql-server linq asp.net-core