Suppression de tous les enregistrements des propriétés de navigation dans Entity Framework

J’ai une relation 1: N entre les tables Program et Student converties par EF en propriété de navigation. Maintenant, je veux supprimer tous les enregistrements de cette navigation étudiants. J’ai commencé comme ça:

foreach(Student student in program.Students) program.Students.Remove(student); 

Mais je suis un peu sceptique à ce sujet.

Alors j’ai essayé de cette façon:

 while (program.Students.Count > 0) program.Students.Remove(program.Students.ToList()[0]); 

Mais cela semble aussi étrange.

Existe-t-il un moyen plus simple de procéder ou sinon quel est le meilleur?

Je ne sais vraiment pas si ça va marcher ou pas, mais je n’y peux rien, je suis curieux. program.Students.Clear() fonctionne-t-il? Ou peut-être le réinitialiser, le réinitialiser? J’espère que cela vous a aidé …

Edit: Veuillez utiliser la réponse de @Ladislav Mrnka, celle-ci étant la bonne. J’ai essayé de supprimer la réponse mais je ne peux pas car c’est la réponse acceptée

Sauf si vous avez une association très spéciale appelée relation d’identification entre votre programme et les étudiants, vous devriez utiliser quelque chose comme ceci:

 foreach(var student in program.Students.ToList()) { program.Students.Remove(student); // Break realation context.Students.DeleteObject(student); // Delete student } 

Supprimer l’élève de la propriété de navigation ne fera que mettre FK dans l’étudiant sur null, mais l’enregistrement ne sera pas supprimé. Si FK n’est pas nullable, vous obtiendrez une exception.

La méthode .Clear () est très bonne. Il supprime toutes les propriétés de navigation dans la firebase database. C’est simple plutôt qu’une boucle foreach.