2014-01-12 2 views
0

Я использую ветерок 1.4.8.удалить родительские сущности триггеры без проверки

скажем, у меня есть заказ со связанными клиентами (реальная модель отличается от этого, просто для упрощения) в моем случае отношения определены как 1 для многих, а FK не может быть недействительным.

Ситуация: У меня есть некоторые заказы и все клиенты в кеше локально.

сейчас, если я удалю клиента, который уже используется в одном или нескольких заказах (также локально), я не получаю отзывов от бриза. после настройки клиентов:

entity.entityAspect.setDeleted(); 

Я ожидал бы, что ошибки проверки появятся, прежде всего уже на клиенте. , но это не тот случай, так что я надеялся, что для моей безопасной гавани (модель базы данных), чтобы бросить некоторые исключения ... но Нету

В настоящее время он проходит через метод saveChanges() и он попадает на стороне сервера, где все заказы, связанные попадают в BeforeSaveEntity() - Метод, который мне не нужен.

В конце концов ничего не получает изменился (кроме удаленного состояния локально), но по крайней мере, я хотел бы иметь некоторую обратную связь от любого ветерка на клиенте или на стороне сервера (сервер ветерке)

может быть, пошел что-то не так с моя модель базы данных. Я воссоздал отношения, обновил свою модель несколько раз, но безуспешно.

метаданных: http://pastebin.com/BjwLgULc

модель заказа (сделок): http://pastebin.com/PSGsZGxR

модель клиент (vehiclemodel): http://pastebin.com/SW9Wj4ze

часть кода BeforeSave объекта, который получает удар unecessarly: http://pastebin.com/N99ucY6P

не уверен то, что мне не хватает, любое просвещение будет высоко оценено

+0

Что вы получите в ответ от сервера когда это сохранить сбой? – Dominictus

+0

Я вижу POST из моего saveChanges(), и состояние остается включенным (ожидается) – fops

+0

, так что нет ответа – fops

ответ

0

я буду проверять количество взаимосвязанных сделок в настоящее время на ServerSide перед выдачей удаления:

// used for now for checking if a parent key related to transactions can be deleted (masterdata.js) 
function checkTransactions(foreignKey,id) { 
    var query = EntityQuery.from("AllTransactions").where(foreignKey, '==', id).take(0).inlineCount(); 
    return query.using(manager).execute().then(querySucceeded, _queryFailed); 
    function querySucceeded(data) { 
     return data.inlineCount; 
    } 
} 

другая стратегия будет использовать Удалено свойство на модели. но дополнительная логика в раскрывающихся списках будут необходимы ...

в отношении лиц, которые не должны получить измененные в кэше я уже создал UserVoice: https://breezejs.uservoice.com/forums/173093-breeze-feature-suggestions/suggestions/5363277-don-t-change-related-entities-in-cache-if-the-fk-r

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