我正在做一些與EF測試,我試圖得到一個ObjectContext.SavingChanges鉤。當我將對象直接添加到上下文中的設置時,一切都正常。但是,當我通過實體導航屬性添加它們時,它們不會顯示在事件中。實體框架SaveChanges問題
我會舉個例子來說明一下。 這是在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; }
}
我試過了,它會返回包括Children集合中的所有對象。你使用哪個EF版本? – 2010-09-13 18:39:05
我已經使用該信息編輯了該問題。 – codegarten 2010-09-13 21:43:41
你在使用STE嗎? – 2010-09-14 02:25:32