我已经在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
和Employee
表的外键时,Teams
会自动更新吗?
答案 0 :(得分:1)
EF中没有自动更新。当您决定更新实体时,您将更新实体,除此之外将不会进行其他任何更新。如果这样做的话,这将是一个主要的安全性和性能问题,因为您不想更新的某些数据也可能会进入数据库,并可能导致大量不必要的数据和对零件的访问不意味着。
如果要在更新后查看反映在实体上的更改,请使用Entity Framework的Refresh方法。
如果您想做到最好,请处置您的实体并创建一个新实体。
如果您不想篡改上下文,则下次您从数据库中读取数据时,它将加载新数据。
但是这里的关键词是加载,而不是自动更新,这是两个不同的术语。
原因是您必须为Entity Framework中的每个CUD操作显式调用context.SaveChanges()
。