目前我正試圖在我的datacontext.savechanges()方法之前實現代碼,該方法從數據上下文中分離出特定類型的所有對象,以便它們不會被插入到數據庫中。我知道你可以調用dbContext.Entry(entity).State = EntityState.Detached
來分離單個實體,但是有沒有辦法從上下文中分離出特定類型的所有對象?實體框架如何從數據上下文中分離出特定類型的所有對象?
編輯:我實現什麼標記C建議和彙編,但我得到一個無效的操作異常,當我嘗試執行代碼:
的實體類型DbEntityEntry是不是模型當前的一部分 上下文。
foreach (System.Data.Entity.Infrastructure.DbEntityEntry dbEntityEntry in this.dataContext.ChangeTracker.Entries<Customer>())
{
if (dbEntityEntry != null && dbEntityEntry.State != System.Data.Entity.EntityState.Modified && dbEntityEntry.State != System.Data.Entity.EntityState.Unchanged)
{
dataContext.Entry(dbEntityEntry).State = System.Data.Entity.EntityState.Detached;
}
}
編輯#2:更加仔細看後,我犯了一個錯誤。看來需要在DBEntityEntry上指定實體。用下面的變化它的工作原理:
foreach (System.Data.Entity.Infrastructure.DbEntityEntry dbEntityEntry in this.dataContext.ChangeTracker.Entries<Customer>())
{
if (dbEntityEntry.Entity != null && dbEntityEntry.State != System.Data.Entity.EntityState.Modified && dbEntityEntry.State != System.Data.Entity.EntityState.Unchanged)
{
dataContext.Entry(dbEntityEntry.Entity).State = System.Data.Entity.EntityState.Unchanged;
}
}
感謝格特對建議使用EntityState.Unchanged代替EntityState.Detached。
不知道你應該* *分離他們。您可能希望將它們標記爲「未更改」,因爲將它們分開也可能會破壞關聯。 –