【问题标题】:The 'entityType' parameter must be an instance of 'EntityType'“entityType”参数必须是“EntityType”的实例
【发布时间】:2014-11-19 19:49:46
【问题描述】:

我刚开始使用 BreezeJS 并使用带有 Asp.Net Web Api 和 EF 的 HotTowel 模板

我已经到了尝试使用 manager.getEntityByKey 检索记录的地步,使用 http://www.breezejs.com/documentation/querying-locally 的示例

为了测试我正在使用的代码:

 var key = new breeze.EntityKey("LibraryItemCategory", 1);
            var entity = manager.getEntityByKey(key);

但是当调用代码时,第一行代码出现错误“'entityType'参数必须是'EntityType'的实例”。

在调用代码时,管理器已加载“LibraryItemCategory”实体,我已使用 Visual Studio 确认 entityType shortName 为“LibraryItemCategory”

任何人都可以提出代码中的问题或我如何解决这个问题吗?

谢谢

标记

【问题讨论】:

    标签: javascript breeze hottowel


    【解决方案1】:

    问题是EntityKey 构造函数的第一个参数必须是EntityType 的实例,而不是类型的名称。 See the API doc.

    因此,你会做这样的事情

    var type = manager.metadataStore.getEntityType("LibraryItemCategory");
    var key = new breeze.EntityKey(type, 1);
    var entity = manager.getEntityByKey(key);
    

    有点笨拙。

    您可能想知道为什么EntityKey 不接受类型名称并使用它来查找EntityType

    嗯......它不能......因为EntityKey“类”没有办法发现你的EntityTypes;所有 EntityType 信息都保存在 MetadataStore ... 其中可能有很多。

    我们必须从MetadataStore 中获取类型;在本例中,我们从经理的metadataStore 获取它。

    p.s.:在调用此代码之前,您必须填充 manager.metadataStore,无论是作为第一次查询的副作用隐含地还是作为 when you call fetchMetadata 显式地填充。

    【讨论】:

      【解决方案2】:

      终于弄明白了,我忘记通过从服务器调用元数据来“启动”应用程序,所以 Breeze 不明白是什么类型

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-02
        • 2016-03-16
        • 2013-08-04
        • 2012-12-10
        相关资源
        最近更新 更多