2014-08-29 51 views
1

我能夠使用代碼entity.entityAspect.validateEntity()驗證實體。但是,這不會驗證導航屬性。我的企業與外部實體有一對一和一對多的關係。我想驗證實體及其導航屬性。我怎樣才能用微風做到這一點?微風驗證實體及其導航屬性

編輯 我有一個類

public class ClassA{ 
public int id{get; set;} 
public List<ClassB> navigationArray{get; set;} 
} 


public class ClassB{ 
public int myClass {get; set;} 

[Foreign("myClass")] 
public ClassA ClassA_E{get; set;} 
} 

我添加的ClassA對象的O1到實體管理器;並將classB的對象O2添加到實體管理器中,並將屬性ClassA_E設置爲O1。一切正常,但在驗證O1時,O2未得到驗證

回答

3

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(); 
+0

是的,這是真的要創建的驗證錯誤。現在說我有一個驗證對象的集合。有沒有一個簡單的方法來做到這一點?這是一個似乎並不適用於我的建議:http://stackoverflow.com/a/26675416/807223 – jpo 2015-02-02 16:53:39

+0

在數據模型中,假設我在需要的順序實體中添加了一個字段。例如,訂單日期是必需的。現在向客戶對象添加訂單。訂單現在屬於訂單集合,但添加的訂單沒有訂單日期。微風能夠識別客戶實體是否無效?也就是說,訂單和項目之間還有一個或多個關係,其中訂單可以有多個項目,每個項目都有一個必需的名稱。如果我添加一個項目,並命令沒有和名稱,應該微風能夠確定客戶實體是否有效? – jpo 2015-10-02 12:54:19