2011-05-17 62 views
10

我加入了一個實體到我的數據庫,像這樣前:標識的SaveChanges()

public TEntity Add(TEntity entity) 
{ 
    return (TEntity)_database.Set<TEntity>().Add(entity); 
} 

然而,DbSet.Add方法沒有返回與標識等新加入的實體,它是隻需將我傳入的對象返回到我的Add方法。

是否應該讓我回到完整的新實體,包括Id,或者在調用SaveChanges()之前無法獲得Id

回答

17

Add()所做的所有調用正在有效地將其註冊到數據上下文,以便可以跟蹤該實體。目前沒有針對數據庫進行實際操作,直到(正如您正確提到的),您致電SaveChanges()

我假設你在表中使用自動生成的ID;在這種情況下,它是在插入記錄時將生成該Id的數據庫引擎,Entity Framework會將其讀回併爲您填充實體。

因此,要確認您的懷疑,請不要在此情況下調用SaveChanges()之前無法獲得Id。

希望這會有所幫助!

+0

歡呼,我認爲一定是這樣,討厭我目前的問題,但它是有道理的 – jcvandan 2011-05-17 11:03:50

+1

如果你能夠切換主鍵類型,你可以使用GUID並生成你的.net代碼,然後發送到數據庫。 – 2013-08-30 18:56:35