Я провожу некоторое тестирование с EF, и я пытался зацепить ObjectContext.SavingChanges. Все работает, когда я добавляю объекты прямо в их набор в контексте. Но когда я добавляю их через свойство Entity nav, они не отображаются в событии.
Я покажу пример, чтобы было понятнее. Это метод, зарегистрированный в событии 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);
}
И вот как я добавляю материал в контекст.
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();
Есть ли способ получить все объекты, которые были добавлены при вызове SaveChanges? Они сохраняются в моей базе данных, поэтому я хочу знать, когда это произойдет.
Спасибо!
изменить: я использую EF4 с CTP4.
edit2: Это мой 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; }
}
public virtual
— вы не показываете свои типы, поэтому я не могу сказать, делали ли вы это. То, что это работает, когда вы вызываетеDetectChanges
, предполагает, что у вас может и не быть. - person Craig Stuntz   schedule 14.09.2010new POCO
не может создать прокси. - person Craig Stuntz   schedule 14.09.2010