Я пытался найти новые добавленные объекты в контексте, используя TryGetObjectByKey:
Dim ObjectFound As Boolean = Context.TryGetObjectByKey(entityKey, obj)
Я обнаружил, что TryGetObjectByKey всегда терпел неудачу, даже когда я знал, что искомая сущность была добавлена в контекст. Рассматриваемая сущность использует адрес электронной почты в качестве первичного ключа, и этот адрес электронной почты предоставляется через конструктор для сущности (он не генерируется БД):
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 для всех добавленных сущностей не имеет значений, а их флаг IsTeorary был установлен в значение true. Ошибка TryGetObjectByKey, поскольку EntityKey для добавленных объектов еще не установлен.
Изначально у меня сложилось впечатление, что EntityKey будет сгенерирован сразу после вызова AddObject, если EntityKey не был сгенерирован БД. Итак, два вопроса:
1) Стоит ли ожидать, что все вновь добавленные объекты будут иметь временные ключи EntityKeys?
2) Если # 1 истинно, как я могу найти вновь добавленные объекты по первичному ключу?