c# - 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
表时会自动更新(它有外键Employee
和Teams
表)吗?
解决方案
EF 没有自动更新。当您决定更新实体时,您将更新实体,除此之外不会进行进一步的更新。如果他们这样做了,这将是一个重大的安全和性能问题,因为您不想更新的一些数据也可能会进入您的数据库,并可能导致大量不必要的数据和对不该更新的部分的访问。
如果要查看更新后实体上反映的更改,请使用 Entity Framework 的Refresh方法。
如果您想做到最好,请处置您的实体并创建一个新实体。
如果您不想篡改上下文,它将在您下次从数据库中读取时加载新数据。
但这里的关键词是Load而不是Auto Update,这是两个不同的术语。
context.SaveChanges()
您必须显式调用实体框架中的每个 CUD 操作是有原因的。
推荐阅读
- html - 媒体查询不起作用和最大宽度问题
- ruby - 如何在 Factorybot 中为具有nested_attributes 的模型创建工厂
- javascript - 如何让自定义代理字段出现在开发人员工具中
- vb.net - VB.NET通过属性文本反序列化XML子节点
- vuejs2 - quasar框架中的Q-Table,状态对象数据表不显示
- html - 为什么我的代码中没有指定样式元素
- javascript - Having some doubts on how to name my Vue.js components and some more
- sql - HANA SQL IsDate() 等效或采用无效数据的 to_date 函数?
- windows-ce - Mifare Standard 1K - 6D00 for external authentication APDU
- python - asyncio tcp 套接字:当套接字关闭时如何取消 asyncio.sleep()?