2011-12-27 28 views
0

我有一個進程,每次添加實體時都需要新添加的實體的主鍵ID。我已覆蓋的SaveChanges()方法,並查看了ChangeTracker,但我沒有看到任何動態方式來檢索新添加的實體。有沒有一個好的方法來做到這一點?在SaveChanges後獲取新增實體?

回答

3

向更改跟蹤器查詢新實體。

public override int SaveChanges() 
{ 
    var newEntities = ChangeTracker.Entries() 
         .Where(entry => entry.State == EntityState.Added) 
         .Select(entry => entry.Entity).ToList(); 

    var count = base.SaveChanges(); 

    // do something with newEntities 

    return count; 
} 
1

在實際保存之前,您可以重寫SaveChanges並收集處於Added狀態的任何實體,但這就是AFAIK。

+0

不幸的是,實體此時沒有主鍵值。 – grefly 2011-12-27 21:50:13

+1

不知道我明白。正如你在Eranga的例子中看到的那樣,你存儲了被添加的實體,然後在保存後做一些事情。如果它們被數據庫分配了主鍵值,則相同的實體將被更新並且您將擁有這些鍵。 – Ocelot20 2011-12-28 14:43:52

+0

謝謝,你說得對。 – grefly 2011-12-29 15:33:48

相關問題