我一直在嘗試使用TryGetObjectByKey找到依據上下文新增實體:EF4是否總是使用臨時密鑰來添加新實體?
Dim ObjectFound As Boolean = Context.TryGetObjectByKey(entityKey, obj)
我發現TryGetObjectByKey總是失敗,即使我知道,實體我一直在尋找已被添加到上下文。有問題的實體使用的電子郵件地址作爲主鍵,並通過構造函數的實體(它不是由DB生成的)提供的email地址:
Public Class Customer
Private _email as string
Public Sub New (Email as string)
'Email is the primary key in the DB and the entity key in EF4.
'It is not generated by the DB.
_email = Email
End Sub
End Class
經過進一步調查,我發現了EntityKeys爲所有添加的實體都沒有值,並且它們的IsTemporary標誌被設置爲true。 TryGetObjectByKey失敗,因爲添加對象的EntityKey尚未設置。
我最初的印象是EntityKey會在調用AddObject時立即生成,如果EntityKey不是由DB生成的。所以,有兩個問題:
1)我應該期望所有新添加的實體都有臨時的EntityKeys嗎?
2)如果#1爲真,我如何通過主鍵找到新增的實體?