breeze api에 따르면 setDeleted가 호출되면 관련된 모든 엔티티에서 엔티티가 제거됩니다. 이것은 사실이지만 엔티티 관리자의 importEntities 함수를 사용하여 삭제 된 항목을 가져올 때 문제가 발생합니다. 삭제 된 엔티티는 네비게이션 속성을 비울 것이지만 삭제 된 항목을 포함하는 탐색 속성을 가진 다른 엔티티는 해당 항목을 자신의 네비게이션 목록에 보관합니다. 엔티티에서 setDeleted가 호출되면 이미 삭제 되었더라도 문제가 해결되지만 필요하지는 않습니다.Breeze - 지운 편지함 탐색 속성 버그
DocCode 테스트를 위해이 테스트 케이스를 만들었습니다.
/*********************************************************
* Create an EM with parent/child relationship data. Export the EM and import it into a new one, delete the child item in the exported EM
* export the 2nd EM into the first EM.
*********************************************************/
test("test imported deleted nav properties", 2, function() {
var em = newEm();
// create a new parent Customer
var parentCustomer = em.createEntity("Customer", {
CustomerID: dummyCustID,
CompanyName: 'TestCo'
});
// a new Order which is a child of the parent Customer
var newOrder = em.createEntity("Order", {
CustomerID: parentCustomer.CustomerID()
});
parentCustomer.entityAspect.setUnchanged();
newOrder.entityAspect.setUnchanged();
// clone the EM data
var expEntities = em.exportEntities(null, true);
//var newEm = newEm();
var newEM = new breeze.EntityManager();
newEM.importEntities(expEntities, { mergeStrategy: breeze.MergeStrategy.OverwriteChanges });
// delete the order
var newOrderCopy = newEM.getEntities("Order")[0];
newOrderCopy.entityAspect.setDeleted();
// export the cloned EM
var expEntitiesNew = newEM.exportEntities();
// merge to the original EM
em.importEntities(expEntitiesNew, { mergeStrategy: breeze.MergeStrategy.OverwriteChanges });
var deletedOrder = parentCustomer.Orders();
ok(newOrder.entityAspect.entityState.isDeleted(), "newOrder should be 'deleted'");
ok(deletedOrder.length === 0, "parentCustomer's 'Orders' should be empty");
});
엔티티를 삭제 한 후에 변경 사항을 저장 했습니까? –
아니요, 변경 사항을 저장하지 않았습니다. 하지만 그것은 내가보고 한 버그와 직접적인 관련이 없습니다. – tsdude
나는 다음 주 초에 이것을 재현하려고 노력할 것이다. 또는 breeze zip에서 DocCode 샘플을 사용하여 간단한 repro unit 테스트를 보내 주시면됩니다. –