public void Delete(Dinner dinner)
{
List<RSVP> rsvps = dinner.RSVPs.ToList();// This clone looks inefficient.
foreach (RSVP rsvp in rsvps)
entities.RSVPs.DeleteObject(rsvp);
entities.Dinners.DeleteObject(dinner);
}
QUESTION:
Suppression d'une ligne de parent en supprimant les lignes enfants faisant référence d'abord à travers les clones de ligne enfant semble inefficace. La duplication des lignes enfant consommera d'énormes ressources, je pense.
Si oui, quelle est la meilleure façon?
EDIT 1:
namespace NerdDinner.Models
{
public class DinnerRepository
{
private NerdDinnerEntities entities = new NerdDinnerEntities();
public IQueryable<Dinner> FindAllDinners()
{
return entities.Dinners;
}
public IQueryable<Dinner> FindUpcomingDinners()
{
return from dinner in entities.Dinners
where dinner.EventDate > DateTime.Now
orderby dinner.EventDate
select dinner;
}
public Dinner GetDinnerByID(int DinnerID)
{
return entities.Dinners.FirstOrDefault(d => d.DinnerID == DinnerID);
}
public void Add(Dinner dinner)
{
entities.Dinners.AddObject(dinner);
}
public void Delete(Dinner dinner)
{
//List<RSVP> rsvps = dinner.RSVPs.ToList();
//foreach (RSVP rsvp in dinner.RSVPs)
// entities.RSVPs.DeleteObject(rsvp);
entities.Dinners.DeleteObject(dinner);
}
public void Save()
{
entities.SaveChanges();
}
}
}
Vous ne pouvez pas faire cela au niveau de la base de données, définissez la règle de suppression à cascade sur la clé étrangère. – Doggett
OK. Merci. Donc j'ai juste besoin de supprimer l'objet du dîner. – xport
Oui. la base de données supprimera les objets enfants pour vous. Doggett tu aurais dû donner ceci comme réponse :) maintenant je ne peux pas le donner ... puisque tu l'as inventé en premier ... et aucun d'entre nous n'a la réputation :) – basarat