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