EntityAspect.validateEntity WILL проверяет свойства навигации (приведенный ниже код был проверен на ветру 1.4.17).
Вы можете добавить свои собственные валидаторы в любое свойство навигации. В приведенных ниже примерах предполагается схема с типом сущностей «Заказчик» и «Заказ», где каждый клиент имеет свойство «заказы» нескалярного типа, и каждый «Заказ» имеет скаляр собственность «клиент».
В этом случае скалярный «клиент» навигация по типу заказа может быть валидатор зарегистрирован как это:
var orderType = em.metadataStore.getEntityType("Order");
var custProp = orderType.getProperty("customer");
// validator that insures that you can only have customers located in 'Oakland'
var valFn = function (v) {
// v is a customer object
if (v == null) return true;
var city = v.getProperty("city");
return city === "Oakland";
};
var customerValidator = new Validator("customerValidator", valFn, { messageTemplate: "This customer's must be located in Oakland" });
custProp.validators.push(customerValidator);
где ошибка проверки будет создана вызовом
myOrder.entityAspect.validateEntity();
И «заказы» несакалярной навигации для типа «Заказчик» могут иметь регистратор, зарегистрированный следующим образом:
var customerType = em.metadataStore.getEntityType("Customer");
var ordersProp = customerType.getProperty("orders");
// create a validator that insures that all orders on a customer have a freight cost > $100
var valFn = function (v) {
// v will be a list of orders
if (v.length == 0) return true; // ok if no orders
return v.every(function(order) {
var freight = order.getProperty("freight");
return freight > 100;
});
};
var ordersValidator = new Validator("ordersValidator", valFn, { messageTemplate: "All of the orders for this customer must have a freight cost > 100" });
ordersProp.validators.push(ordersValidator);
где ошибка проверки будет создан вызовом
myCustomer.entityAspect.validateEntity();
Да, это верно. Теперь скажите, что у меня есть проверка объекта. Есть ли простой способ сделать это? Это предложение, которое, похоже, не работает для меня: http://stackoverflow.com/a/26675416/807223 – jpo
В модели данных, скажем, я добавил определенное поле в объекте заказа по мере необходимости. например, требуется дата заказа. Теперь добавьте заказ на объект клиента. Теперь заказ принадлежит коллекции заказов, но добавленный заказ не имеет даты заказа. Должен ли ветер определить, что объект клиента недействителен? Кроме того, скажем, что между порядком и множеством элементов существует одно отношение ко многим, и порядок, в котором заказ может иметь несколько элементов, и каждый элемент имеет требуемое имя. Если я добавляю элемент и заказываю без имени и имени, должен ли бриз быть в состоянии определить, что объект клиента действителен? – jpo