Je fais des tests avec EF et j'essayais d'obtenir un crochet sur le ObjectContext.SavingChanges. Tout fonctionne quand j'ajoute des objets directement à leur ensemble dans le contexte. Mais lorsque je les ajoute via une propriété d'entité de navigation, ils n'apparaissent pas dans l'événement.Entity Framework SaveChanges problème
Je vais montrer un exemple pour le rendre plus clair. Cette méthode est enregistrée dans l'événement SavingChanges.
void SavingChanges(object sender, System.EventArgs e)
{ var oc = (ObjectContext)sender;
foreach (var entity in oc.ObjectStateManager
.GetObjectStateEntries(EntityState.Added | EntityState.Deleted | EntityState.Unchanged | EntityState.Modified))
Debug.WriteLine(entity);
}
Et c'est ainsi que j'ajoute des choses au contexte.
var w1 = new Workspace()
{
Name = "teste1",
};
var w2 = new Workspace()
{
Name = "teste2"
};
var w3 = new Workspace()
{
Name = "teste3"
};
var w4 = new Workspace()
{
Name = "teste4"
};
//this shows up in the event
context.Workspaces.Add(w1);
//these do NOT show up on the event
w1.Children.Add(w2);
w1.Children.Add(w3);
w1.Children.Add(w4);
context.SaveChanges();
Y at-il un moyen que je puisse obtenir toutes les entités qui ont été ajoutées lorsque le SaveChanges est appelé? Ils sont persistants dans ma base de données, donc je veux savoir quand ça arrive.
Merci!
edit: J'utilise EF4 avec CTP4.
edit2: Ceci est mon POCO.
public class Workspace
{
public virtual int ID { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<Workspace> Children{ get;set;}
public virtual Workspace Parent { get; set; }
}
Je l'ai essayé et il retourne tous les objets y compris ceux de la collection Children. Quelle version EF utilisez-vous? –
J'ai modifié la question avec cette information. – codegarten
Utilisez-vous des STE? –