【问题标题】:saveChangesAsync update object I didn't save itsaveChangesAsync 更新对象我没有保存
【发布时间】:2020-01-12 09:18:01
【问题描述】:

我正在使用实体框架核心从数据库中获取一个对象这个对象我将使用它来创建另一个对象,所以我的步骤是

1- 获取对象表单数据库

2- 更改此对象中的属性

3- 使用此对象将另一个类型的另一个对象添加到数据库中

4-调用

  await _context.AppLogs.AddAsync(log);
  await _context.SaveChangesAsync();

之后 EF 添加我的对象“日志”并自动更新我在数据库中的第一个对象属性

我想问一下这是否有效,以及为什么我没有调用更新函数我只是更改了一个属性!!

【问题讨论】:

    标签: asp.net-core-mvc save entity-framework-core asp.net-core-webapi


    【解决方案1】:

    EF 将自动检测对上下文跟踪的现有实体所做的更改。当您从数据库加载/查询时会跟踪实体。因此,只需修改分配给属性的值,然后调用SaveChanges 将自动更新数据库:

    var blog = context.Blogs.First();
    blog.Url = "http://sample.com/blog";
    context.SaveChanges(); 
    

    如果您不想为实体更新数据库,可以将实体状态设置为Unchanged

    var blog = context.Blogs.First();
    blog.Url = "http://sample.com/blog";
    context.Entry(blog).State = EntityState.Unchanged; 
    context.SaveChanges();  
    

    SaveChanges 不会触及未更改的实体。对于处于未更改状态的实体,更新不会发送到数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 2020-05-30
      相关资源
      最近更新 更多