首页 > 解决方案 > Entity Framework Core 更新表

问题描述

我已经在 EF Core 中映射了现有数据库并获得了与表关联的模型类。

例如:Employee

 public int EmployeeId { get; set; }
 public string FirstName { get; set; }
 public string LastName { get; set; }

 public ICollection<EmployeeTeams> EmployeeTeams { get; set; }// all the teams employee is in

Teams班级:

 public int TeamId { get; set; }
 public string TeamName { get; set; }
 public int? TeamLeaderId { get; set; }

 public Employees TeamLeader { get; set; }
 public ICollection<EmployeeTeams> EmployeeTeams { get; set; }

EmployeeTeams班级:

 public int EmployeeId { get; set; }
 public int TeamId { get; set; }
 public Employees Employee { get; set; }
 public Teams Team { get; set; }

我的问题是:EmployeeTeams当我添加到EmployeeTeams表时会自动更新(它有外键EmployeeTeams表)吗?

标签: c#asp.net-coreentity-framework-core

解决方案


EF 没有自动更新。当您决定更新实体时,您将更新实体,除此之外不会进行进一步的更新。如果他们这样做了,这将是一个重大的安全和性能问题,因为您不想更新的一些数据也可能会进入您的数据库,并可能导致大量不必要的数据和对不该更新的部分的访问。

如果要查看更新后实体上反映的更改,请使用 Entity Framework 的Refresh方法。

如果您想做到最好,请处置您的实体并创建一个新实体

如果您不想篡改上下文,它将在您下次从数据库中读取时加载新数据。

但这里的关键词是Load而不是Auto Update,这是两个不同的术语。

context.SaveChanges()您必须显式调用实体框架中的每个 CUD 操作是有原因的。


推荐阅读