实体框架:当更新/删除主实体时,相关实体会发生什么

本文关键字:实体 体会 什么 框架 更新 删除 | 更新日期: 2023-09-27 18:06:53

我有一个实体(A),它有一个相关的实体(B)。当我加载A时,我想自动加载B。

我在OnModelCreating()中设置了以下内容:

ModelBuilder.Entity<A>().HasRequired(o => o.CreatedByAdministrator).WithMany().HasForeignKey(o => o.CreatedBy);

除此之外,我还设置了:

public DbSet<A> As { get; set; } 
public DbSet<B> Bs { get; set; } 

当我加载一个带有实体a -的列表时,我说:

context.As.Include("CreatedByAdministrator").ToList();

它似乎工作完美。但我想确保-当我保存/更新/删除A时-它不会影响相关的b,我该怎么做?

实体框架:当更新/删除主实体时,相关实体会发生什么

删除

将映射中的WillCascadeOnDelete设置为false

ModelBuilder.Entity<A>().HasRequired(o => o.CreatedByAdministrator).WithMany().HasForeignKey(o => o.CreatedBy).WillCascadeOnDelete(false);

保存并更新

如果你没有编辑相关实体中的属性,它将不会更新/保存任何内容。如果你编辑了一些东西,你可以将该属性设置为null

也可以设置该对象的状态为Unchanged

context.Entry(entity).State = EntityState.Unchanged;

当您从A中获取(获取数据)时,您可以检索相关实体的数据

Get/获取

e.g.
var  model  = a.tolist()
in view 
Model.b.yourproperty  

更新/保存

如果你想更新和保存,那么你必须编写更新或保存功能。否则,它将不影响您的相关属性。

删除

请在这里检查基础

也同意@Loetn的删除。