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

时间:2014-06-05 06:04:40

标签: c# entity-framework relationship

我有一个实体(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.我该怎么做?

2 个答案:

答案 0 :(得分:0)

删除

将映射上的WillCascadeOnDelete设置为false。

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

保存并更新

如果您尚未在相关实体中修改某个媒体资源,则无法更新/保存任何内容。 如果您确实编辑了某些内容,则可以始终将该属性设置为null

或者您可以将该对象的状态设置为Unchanged

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

答案 1 :(得分:0)

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

获取/获取

e.g.
var  model  = a.tolist()

in view 
Model.b.yourproperty  

<强>更新/保存

如果您想更新并保存,则必须手动编写更新或保存功能。否则,不会影响您的相关财产。

删除

plz check fundamental here

也同意@Loetn的删除。