2012-10-11 85 views
6

從我的研究中,我看到調用DbContext.Entry(someEntity)會自動將實體附加到上下文。DbContext.Entry附加實體

但是,當我這樣做時,我發現實體的狀態是分離的。

任何人都可以對此和DbContect.Entry如何工作。我正在使用EF 5.0

謝謝。

回答

6

如果你想附加一個對象,你真正想要的是DbSet.Attach。 DbContext.Entry僅向您提供有關實體的信息,並允許您在已經連接的狀態下更改狀態。

這裏有一個good post關於實體狀態從MSDN

0

由於來自@馬克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; 
}