public override int SaveChanges() { var orphanedResponses = ChangeTracker.Entries().Where( e => (e.State == EntityState.Modified || e.State == EntityState.Added) && e.Entity is PessoaAvaliacao && e.Reference("Avaliacao").CurrentValue == null); foreach (var orphanedResponse in orphanedResponses) { PessoaAvaliacaos.Remove(orphanedResponse.Entity as PessoaAvaliacao); } var pergs = ChangeTracker.Entries().Where( e => (e.State == EntityState.Modified || e.State == EntityState.Added) && e.Entity is Pergunta && e.Reference("Avaliacao").CurrentValue == null); foreach (var orphanedResponse in pergs) { Perguntas.Remove(orphanedResponse.Entity as Pergunta); } var alters = ChangeTracker.Entries().Where( e => (e.State == EntityState.Modified || e.State == EntityState.Added) && e.Entity is Alternativa && e.Reference("Pergunta").CurrentValue == null); foreach (var orphanedResponse in alters) { Alternativas.Remove(orphanedResponse.Entity as Alternativa); } var pesoss = ChangeTracker.Entries().Where( e => (e.State == EntityState.Modified || e.State == EntityState.Added) && e.Entity is Peso && e.Reference("Avaliacao").CurrentValue == null); foreach (var orphanedResponse in pesoss) { Pesos.Remove(orphanedResponse.Entity as Peso); } return(base.SaveChanges()); }