У меня есть объект домена, используемый в идентификационной карте (ключи являются свойством объекта Id
).Нулевой ключ в идентификационной карте
псевдокод:
map = new Mapping();
map[domainObj.Id] = 'foo';
Я наблюдаю объект, чтобы сказать мне, когда он был сохранен в базу данных:
domainObj.bind('saved', function() {
map[domainObj.Id] = 'new foo!'
})
Для новых объектов Id
поля является пустым и не заполняются до тех пор, пока сохранен в базе данных.
И в этом моя проблема. В случае с новыми объектами поиск «map[domainObj.Id]
» терпит неудачу, поскольку после сохранения его идентичность изменилась!
Каков наилучший способ использования объекта в карте идентификации?
Ограничение:
- Я использую язык, который не допускает объекты в качестве ключей в отображении [JavaScript]
Id
поля необходимо генерироваться на сервере при сохранении нового объект
Обновление
Благодарим за отзыв. Я действительно хотел бы, чтобы объекты ценности отображались так же, как объекты: только потому, что объект значения не был сохранен, не означает, что у него нет значения для отображения для моего приложения. Я на самом деле неправильно понимаю, что такое идентификационная карта (которая, перечитав определение шаблона, оказывается, что я действительно не использую).
Решение, которое я придумал, довольно прямолинейно от ответа Игоря: каждый объект получает случайный идентификатор, назначенный ему при создании экземпляра. Он уникален, неизменен и неизменен во время жизни контекста, в котором живет этот объект. Он существует для обоих объектов из db и новых экземпляров. Настройка для сущностей заключается в том, что она настроена на соответствие реальному идентификатору объекта. Это упрощает отладку. Это значение, которое я использую в качестве ключа в отображении.
Почему вы хотите, чтобы добавить временные объекты к identitymap? – Paco
@Paco: Это не карта идентичности. Я неправильно понял, что для карты идентичности. Я оставил формулировку вопроса так же, как и для других людей, которые думают, что используют карту идентичности и сталкиваются с этой проблемой. См. Мой комментарий в ответ на http://stackoverflow.com/questions/804041/null-key-in-identity-map/804096#804096 – JPot