实体框架:当更新/删除主实体时,相关实体会发生什么
本文关键字:实体 体会 什么 框架 更新 删除 | 更新日期: 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的删除。