Javascript 在Breeze中创建依赖于其他实体的实体

Javascript 在Breeze中创建依赖于其他实体的实体,javascript,breeze,durandal,Javascript,Breeze,Durandal,我正以我的方式与BreezeJS和Durandal合作。这一切都很好,但我有一个关于创建一个与另一个实体有关系的新实体的问题 假设我们有一个实体客户和订单。当我创建一个依赖于customer的新订单时,它有两个字段,一个用于customerID,另一个用于customer it self!customerID给定正确,但由于没有Customer对象而崩溃!我如何解决这个问题 我的Dataservice.createT是: // This function creates an entity f

我正以我的方式与BreezeJS和Durandal合作。这一切都很好,但我有一个关于创建一个与另一个实体有关系的新实体的问题

假设我们有一个实体客户和订单。当我创建一个依赖于customer的新订单时,它有两个字段,一个用于customerID,另一个用于customer it self!customerID给定正确,但由于没有Customer对象而崩溃!我如何解决这个问题

我的Dataservice.createT是:

 // This function creates an entity for the specific table (entity)
        // that is passed as an parameter. The entity is the same as the table name 
        //in the map folders. So for creating a new Memo entity should be tblMemo
        Dataservice.prototype.createT = function (initialValues, entity) {
            return this.manager.createEntity(entity, initialValues);
        };



var repairOrderLineN = dataservice.createT({
                        RepairOrderID: '1', CustomerID: result[0].CustomerId,
                        Description: result[0].Description, InternalCode: result[0].Code,
                        Hours: result[0].Hours, Tariff: result[0].Tariff,
                        Costs: result[0].Costs, Quantity: result[0].Qty,
                        DamageCode: result[0].Dam, RepairCode: result[0].Rep,
                        MaterialCode: result[0].Mat, LocationCode: result[0].Location,
                        IsAgreement: result[0].IsAgreement, IsAuthorized: result[0].IsAuthorized,
                        DoRepair: result[0].DoRepair
                    }, 'tblRepairOrderLine');

                    if (repairOrderLineN.entityAspect.validateEntity()) {
                        extendItem(repairOrderLineN);
                        repairorderlines.push(new repairorderline(repairOrderLineN));
                        dataservice.saveChanges();
                        updateFinance();
                    }

一个JSON是从一个模式中提供的,用于创建实体,当然我知道客户对象不在其中!该死的,我迷路了:S Help:(

我需要更多关于你的案例的信息,特别是你所说的“崩溃”是什么意思

我不知道你的
dataservice.createT
是做什么的。它实际上有点太复杂了,不容易回答。你能为我们简化一个测试用例吗

同时,我在的“entityTests.js”中添加了一个通过测试,它演示了使用Northwind的场景

/********************************************************* * Add an Order with initializer that set its parent Customer by Id *********************************************************/ test("add Customer created using initializer with parent Customer Id", 4, function () { var em = newEm(); // create a new parent Customer var parentCustomer = em.createEntity("Customer", { CustomerID: breeze.core.getUuid(), CompanyName: 'TestCo' }); // a new Order which is a child of the parent Customer var newOrder = em.createEntity("Order", { CustomerID: parentCustomer.CustomerID() }); ok(newOrder.entityAspect.entityState.isAdded(), "newOrder should be 'added'"); ok(parentCustomer.entityAspect.entityState.isAdded(), "parentCustomer should be 'added'"); var orderCustomer = newOrder.Customer(); ok(orderCustomer, "newOrder's parent 'Customer' property should return a Customer entity"); ok(orderCustomer === parentCustomer, "newOrder's parent Customer should be " + parentCustomer.CompanyName()); });
你能给我们提供一个工作样本而不是测试地址吗?当创建一个新的复杂实体时,我们不知道初始值是多少,因为用户正在创建它。例如,创建一个类型为“thing”的新实体(在你的示例中)初始化值是什么?我在创建一个具有其他一些复杂属性的新实体时遇到了很多问题。而且这并不容易……测试就是一个有效的例子。我不知道你要求的是什么。还有一个问题,就是在创建一个对象时不知道属性值。如果未知值是允许在一段时间内保持未知。如果在创建实体之前必须知道它们,则必须使用“项目视图模型”首先…一个自定义结构,它可以在实例化实体之前积累所需的事实。但我怀疑我们的观点不一致。如果您需要更多帮助,您必须给我们一个最小的示例,它仍然可以触及问题的核心。 ... var thing = manager.createEntity('Thing', { ... initialize with simple data values } var thing.relatedEntityA = relatedEntityA; var thing.relatedEntityB = relatedEntityB; ...