Sql server 在实体框架中,代码优先的方法需要在引用表之间执行删除操作
我有以下两个表(表2中的Sql server 在实体框架中,代码优先的方法需要在引用表之间执行删除操作,sql-server,entity-framework,Sql Server,Entity Framework,我有以下两个表(表2中的entityid是表1的外键): 表1{entityid,用户名} 表2{id,entityid,firstname,lastname….} 当我使用EF 6对表2执行删除操作时,如果表2中没有进一步的引用,我希望表1中的条目也被删除 通过使用此代码: modelBuilder.Entity<SigODEntity>() .HasOptional(a => a.SigODs) .WithOptional
entityid
是表1的外键):
- 表1{entityid,用户名}
- 表2{id,entityid,firstname,lastname….}
modelBuilder.Entity<SigODEntity>()
.HasOptional(a => a.SigODs)
.WithOptionalDependent()
.WillCascadeOnDelete(true);
modelBuilder.Entity()
.has可选(a=>a.SigODs)
.WithOptionalDependent()
.WillCascadeOnDelete(真);
我能够对表1执行删除操作,这将删除表2中的子条目
但我希望这种情况也能以相反的方式发生。在实体框架中有没有直接的方法可以做到这一点?没有直接的方法可以根据需要执行删除。因为你总是提到表1中的关系→ 表2 您必须使用一个循环(foreach),该循环将表2中的所有入口状态提到为已删除(可能带有条件),同时您必须检查表2中入口的状态(可选,取决于您的场景,如果您使用任何条件删除表2,则会有一些数据未删除)。如果表2中所有条目的状态均为“已删除”,则将表1数据的条目状态也更改为“已删除”,并保存
db.SaveChanges()否。这将使删除单个子记录成为一项昂贵的操作。EF必须检查相同类型的其他实体中是否存在FK值。而且,这会增加出错的机会,因为家长可能有其他的参考资料。谢谢!!!现在要删除父项,我要检查如果没有子元素,那么只删除父项。