我只是想知道是否有办法更新SQL行中的每个字段/属性,而不必为每个字段声明一个显式的“context.FieldName = model.FieldName”。
我尝试做的是:
但是如果我明确地将每个DTO字段=设置为其对应的模型字段,那么它(显然)可以工作。但是由于频繁的数据库更改以及大量的SQL字段,我希望避免手动更新每个字段并在每次更改数据库时都进行维护。
答案 0 :(得分:2)
如果您使用最新版本的automapper,您可以执行以下操作:
public void UpdateCustomer(Customer customer)
{
var customerTopdate=dbContext.Customers.Where(c=>c.Id=customer.Id);
var result=AutoMapper.Map<Customer>(customer,customerTopdate);
dbContext.SaveChanges();
}
答案 1 :(得分:1)
您可以Entity State
使用entity
update
以及delete
和insert
..
更新
dbContext.Entry(yourEntity).State = EntityState.Modified;
dbContext.SaveChanges();
插入的
dbContext.Entry(yourEntity).State = EntityState.Added;
dbContext.SaveChanges();
删除的
dbContext.Entry(yourEntity).State = EntityState.Deleted;
dbContext.SaveChanges();
不要忘记在每次操作结束时拨打SaveChanges()
。
有关详细信息,请访问
<强> Entity states and SaveChanges 的强>
答案 2 :(得分:0)
感谢所有回复。以下是使用最新版AutoMapper的方法:
public void UpdateCustomer(Customer customer)
{
var customerTopdate=dbContext.Customers.Where(c=>c.Id=customer.Id);
if (customerTopdate != null {
_mapper.Map(customer,customerTopdate);
_context.SaveChanges();
}
}