從我的研究中,我看到調用DbContext.Entry(someEntity)會自動將實體附加到上下文。DbContext.Entry附加實體
但是,當我這樣做時,我發現實體的狀態是分離的。
任何人都可以對此和DbContect.Entry如何工作。我正在使用EF 5.0
謝謝。
從我的研究中,我看到調用DbContext.Entry(someEntity)會自動將實體附加到上下文。DbContext.Entry附加實體
但是,當我這樣做時,我發現實體的狀態是分離的。
任何人都可以對此和DbContect.Entry如何工作。我正在使用EF 5.0
謝謝。
如果你想附加一個對象,你真正想要的是DbSet.Attach。 DbContext.Entry僅向您提供有關實體的信息,並允許您在已經連接的狀態下更改狀態。
這裏有一個good post關於實體狀態從MSDN
由於來自@馬克Oreta答案是不完整的:
後,他張貼的link和閱讀整個文章中透露了一些不同的信息:所以的DbContext。條目(someEntity)實際上是將實體附加到上下文,如果您設置了您需要的相關EntityState。
要附加修改或增加實體,你可以這樣做:
using(var yourDbContext = new YourDbContext())
{
yourDbContext.Entry(yourEntity).State =
yourEntity.ID == 0 ?
System.Data.Entity.EntityState.Added :
System.Data.Entity.EntityState.Modified;
}
要附加未修改的實體,你可以這樣做:
using(var yourDbContext = new YourDbContext())
{
yourDbContext.Entry(yourEntity).State = System.Data.Entity.EntityState.Unchanged;
}