依靠其他实体在微风中创建实体
Create entity in Breeze relying on other entity
我正在使用BreezeJS和Durandal。这一切都很好,但我有一个关于创建一个与另一个实体有关系的新实体的问题。
假设我们有一个实体客户和订单。当我创建一个依赖于客户的新订单时,它有两个字段,一个用于customerID,另一个用于customer it self!customerID给定正确,但由于没有Customer对象而崩溃!我该如何解决此问题?
我的数据服务.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帮助:(
我需要更多关于您的案例的信息,特别是您所说的"崩溃"是什么意思。
我不知道你的dataservice.createT
是干什么的。实际上,这里的答案有点太复杂了。你能为我们简化一个测试用例吗?
同时,这里有一个通过的测试,我将它添加到DocCode示例的">entityTests.js"中,该示例演示了您使用Northwind的场景。
/**********************************************************添加具有初始值设定项的订单,该初始值设定器按Id设置其父级Customer*********************************************************/test("add Customer created using initializer with parent Customer Id",4,function(({var em=newEm((;//创建新的父客户var parentCustomer=em.createEntity("客户"{客户ID:breez.core.getUuid((,公司名称:"TestCo"});//作为父客户的子级的新订单var newOrder=em.createEntity("订单",{CustomerID:parentCustomerID((}(;ok(newOrder.entitySpect.entityState.isAdded((,"newOrder应为'addd'"(;ok(parentCustomer.entitySpect.entityState.isAdd((,"parentCustomer应为'add'"(;var orderCustomer=newOrder.Customer((;ok(orderCustomer,"newOrder的父"Customer"属性应返回Customer实体"(;ok(orderCustomer===parentCustomer,"newOrder的父Customer应为"+parentCustomer.CompanyName(((;});
如果父客户以前存在(例如,已被提取(,它也同样有效。
顺便说一句,我不得不初始化parentCustomer.CustomerID
,因为它在元数据中被定义为客户端生成的密钥。在我们的大多数示例中,实体密钥是存储生成的(例如,Order.OrderID
(,不会指定。
更新日期:2013年4月30日
我怀疑初始化器对象中的某个位置是result[0].something
,其中something
是一个实体,而不是一个简单的数据值(例如,整数id
(。
在我写这篇文章的时候,如果任何初始值设定项值是Breeze实体,那么createEntity
就会爆炸。这个问题将在1.3.2版中得到解决,该版本很快就会发布。请注意,这个新功能将首先进行测试。API不会改变,但有很多边缘条件,很难涵盖所有这些条件。清除挥之不去的bug需要时间。
不管怎样,你今天都有其他选择。如果您只是使用相关实体的外键ID进行初始化,而不是使用相关实体本身进行初始化,那么就可以了。或者,您可以在第一次创建实体后分配相关实体,如下所示:
。。。var thing=manager.createEntity("ing"{…使用简单数据值初始化}var thing.latedEntityA=相关实体A;var thing.latedEntityB=相关实体B;。。。
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 为effect Composer创建GodRays效果过程
- 从javascript创建一个列表
- 微风从现有实体创建实体
- 如何在phantomjs中创建实体
- 创建Crafty JS实体的类(类的类?)
- 用于使用 DateTime 创建新实体的 API 控制器
- 是否可以捕获内部创建的必应地图实体的事件
- 创建来自 Twitter REST API 实体(主题标签、链接、提及等)的推文文本的链接
- Knockout.js toJSON 从 Breeze 实体创建空对象
- 如何在javascript中创建实体
- 通过选择框创建实体
- 依靠其他实体在微风中创建实体
- 基于实体属性值创建数据网格
- 创建新实体时用javascript刷新视图
- 如何在JHipster 3.x中创建具有相关实体列表的实体视图
- 无法识别微风创建实体类型
- SAPUI5创建带有日期的OData实体——生成以CX_SXML_PARSE_ERROR结束的错误请求负载
- 在不修改/创建实体记录的情况下触发插件
- 基于数据库实体创建模型