EntityAspect.validateEntity將驗證導航屬性(下面的代碼已在breeze 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 2015-02-02 16:53:39
在數據模型中,假設我在需要的順序實體中添加了一個字段。例如,訂單日期是必需的。現在向客戶對象添加訂單。訂單現在屬於訂單集合,但添加的訂單沒有訂單日期。微風能夠識別客戶實體是否無效?也就是說,訂單和項目之間還有一個或多個關係,其中訂單可以有多個項目,每個項目都有一個必需的名稱。如果我添加一個項目,並命令沒有和名稱,應該微風能夠確定客戶實體是否有效? – jpo 2015-10-02 12:54:19