Breeze不会发布导航属性

时间:2016-12-01 16:29:46

标签: breeze

我继承了一个OData服务,除其他外,还公开了一个名为Evaluation的类型。此类型包含许多基本类型属性(int,bool)和两个导航属性/指向其他实体的链接。

Breeze配置为使用v3 /'原创' odata适配器: breeze.config.initializeAdapterInstance('dataService', 'odata', true);

如果我创建一个新实体

var manager = new breeze.EntityManager('odataEndPointHere');
manager.fetchMetadata().then(() => { var newEvaluation = manager.createEntity('Evaluation', {Name:'Foo'}); });

然后这个newEvaluation将引用所有原始字段和导航属性(称为验证 - 一个TPH类型 - 和替换 - 一个〜正常~1:1实体关系)。如果我expand()该关系,我可以查询现有的评估,并会看到预期的验证值。

抓住现有的Validation实例并分配它似乎也可以正常工作: manager.fetchEntityByKey('Validation', existingIdHere).then(validation => { newEvaluation.Validation = validation; // works, while assigning a non-entity throws });

但是,如果我致电manager.saveChanges();,服务器会报告没有(强制)验证链接。查看$ batch端点的POST,我发现微风实际上只发布了Evaluation类型的子集,只发布了原始字段而没有发布任何导航属性。现有(已获取和已更新)和新(createEntity)对象都会发生这种情况。

现在,我知道我还没有创建一个小测试案例 - 鉴于这是一项我无法直接控制的服务,我仍然在试图弄清楚我将如何去做提供减少的繁殖方法。

那说:

  • breeze可以查询我的所有实体,就好了。扩展导航属性可以完美地运行

  • breeze在我saveChanges()期间完全忽略了相同的属性

  • (不相关?)breeze无法仅设置FK ID(http://breeze.github.io/doc-js/navigation-properties.html,"直接设置外键")虽然它确实列出了导航属性manager.metadataStore.getEntityType("Evaluation").navigationProperties

编辑:

$元数据结果包含有关实体的内容:

<EntityType> <!-- snip the rest ---> <NavigationProperty Name="Evaluations" Relationship="MyNamespace.Entities.FK_Evaluation_Validation" ToRole="Evaluation" FromRole="Validation" /> </EntityType>

以后:

<AssociationSet Name="FK_Evaluation_Validation" Association="MyNamespace.Entities.FK_Evaluation_Validation"> <End Role="Validation" EntitySet="Validations" /> <End Role="Evaluation" EntitySet="Evaluations" /> </AssociationSet>

0 个答案:

没有答案