javascript - Breeze js : adding referential constraint to an entity type

标签 javascript odata breeze

这是 my previous issue 的后续问题- 这个有点困惑,与 Telerik 数据服务更相关。

我从服务器收到的元数据缺少关联节点中的引用约束,尽管我已在模型上设置了外键属性

因此,我正在考虑在 FetchMetadata 的回调中手动将这些约束添加到我的实体中。

这可能吗?有人可以提供一个简单的例子来说明如何做到这一点吗?

[编辑]

这是我到目前为止所拥有的:

  manager.fetchMetadata().then(function () {
        var mandatType = manager.metadataStore.getEntityType("Mandate");
        mandatType.autogeneratedKeyType = breeze.AutoGeneratedKeyType.Identity;

        var openPositionsProp = new breeze.NavigationProperty({
            name: "OpenPositions",
            entityTypeName: "OpenPositions:#DirectDebitModel", 
            isScalar: true,
            associationName: "OpenPosition_Mandate_Mandate_OpenPositions",
            foreignKeyNames: ["Id"]
        });

        mandatType.addProperty(openPositionsProp);
});

但它引发了异常:

“Mandate:#DirectDebitModel”EntityType 已添加到 MetadataStore,因此不能向其中添加其他属性。

最佳答案

好的,我有一个可能的方法您现在就可以使用。

  1. 像现在一样从 Teleriks OData feed 中获取元数据。

  2. 通过MetadataStore.exportMetadata方法导出上一步创建的metadataStore。这将以 Breeze 的 native 格式返回相同元数据的“字符串化”json。这种格式更容易使用。

  3. 通过 JSON.parse 将此字符串转换为 json。

  4. 修改json以添加引用约束信息。请参阅Breeze Native Metadata format docs here

  5. 创建一个新的MetadataStore并将修改后的json导入其中。

  6. 使用此 MetadataStore 创建一个新的 EntityManager 并使用它。此 EntityManager 现在应该具有完整的 Breeze 元数据,以便与 feed 的其余部分一起使用。

    希望这是有道理的!

    我们计划在下一个版本中发布一种形式的混合元数据。不幸的是,它不涵盖您的情况,因为我们专注于如何将自定义元数据添加到现有元数据存储,而不是实际编辑/修改现有元数据。

    另一种选择是我们(IdeaBlade)为此类工作提供咨询服务。我们或许可以编写一个工具来为您执行步骤 1 到 6。如果您对此感兴趣并提及这篇文章,请联系 Breeze@ideablade.com。

关于javascript - Breeze js : adding referential constraint to an entity type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18617075/

相关文章:

javascript - 为具有不同索引的js函数创建循环

knockout.js - Breeze 和 Knockout 中的验证

javascript - Selectize.js "Uncaught TypeError: Cannot read property ' extend' of undefined"

javascript - 使用 AJAX Rails 从 View 中删除评论

linq - 为什么我不能在 OData 中使用 LINQ 的 First/FirstOrDefault 方法?

certificate - 如何将证书附加到 ODATA 服务的 C# 客户端?

javascript - Mongoose ODM、BreezeJS - 一种模型定义

knockout.js - 使用 moment.js 格式化 Breeze 检索到的日期。 Hot Towel 模板

javascript - 如何将div的内容保存为图像?

reactjs - 简单 - React 和 OData