:EF4は、新しく追加されたエンティティには常に一時キーを使用しますか?私はTryGetObjectByKeyを使用してコンテキストに新しく追加されたエンティティを見つけようとしてきた
Dim ObjectFound As Boolean = Context.TryGetObjectByKey(entityKey, obj)
私は私が探していたエンティティがコンテキストに追加されていたことを知っていた場合でも、TryGetObjectByKeyは常に失敗したことがわかりました。問題のエンティティが主キーとして電子メールアドレスを使用し、そのメールアドレスは、(それがDBによって生成されていない)エンティティのコンストラクタを介して提供されています
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に設定されていました。追加されたオブジェクトのEntityKeyがまだ設定されていないため、TryGetObjectByKeyが失敗しました。
私は元々、EntityKeyがDBによって生成されなかった場合にAddObjectを呼び出すとすぐにEntityKeyが生成されるという印象を受けました。したがって、2つの質問:
1)新しく追加されたすべてのエンティティに一時的なEntityKeysがあると期待する必要がありますか?
2)#1が真である場合、主キーで新しく追加されたエンティティを見つけるにはどうすればよいですか?次