0

Я могу создать объект сущности, установить некоторые значения по умолчанию и добавить его в диспетчер. Теперь я хочу отслеживать изменения, используя manager.hasChanges(). По какой-то причине это всегда возвращает true. Должен ли я также проверять что-то еще при отслеживании вновь созданных объектов, которых нет в базе данных?Breeze: Отслеживание изменений нового объекта

ответ

1

Как только вы «Добавить» его в EntityManager, по определению, есть изменения, потому что он находится в состоянии «Добавлено». Для добавления «hasChanges» означает, что он должен быть сохранен, потому что он «отличается» от того, что было предоставлено службой персистентности (в этом случае объект еще не был «сохранен»).

Что вы можете сделать, это «Прикрепить» свою сущность к EntityManager в состоянии «Без изменений».

myEntityManager.attachEntity(newEntity, breeze.EntityState.Unchanged); 

В этом случае любые изменения будут работать так, как вы хотите, но ...

Breeze теперь будет рассматривать вашу недавно присоединенную к сущности уже были сохранялось, и если вы пытаетесь сохранить его , то сбой не будет выполнен, так как ветерок попытается «изменить» сохраненную сущность вместо создания новой.

Если вы действительно хотите выполнить свой запрос, вам нужно будет использовать «attach», но также отслеживать эти объекты и отмечать их «добавленными», прежде чем пытаться их сохранить.

Смежные вопросы