我绝对喜欢Breezejs,很惊讶地看到我的枚举值被展示为他们的文本价值而不是他们的序数值!我希望能够做的是,在客户端,打开MetadataStore,获取枚举并修改它的文本属性以获取显示目的。

是目前可能的吗?从我的研究来看,它不会出现,但我想知道是否可能是一个简单的解决方法。我尝试的一切都涉及大量的黑客和服务器端属性,但无济于事,或者解决方案似乎过于复杂,不值得的好处。

有帮助吗?

解决方案

这是我所说的如何从另一个所以评论

枚举值在EF生成的元数据中可用,并发送到Breeze客户端。我同意Breeze应该自动选择它们并将它们放在某个地方,以便您不必为它们进行单独的请求,或从传递给MetadataStore.fetchmetAdata成功回调的原始元数据中提取它们。它在我们的积压上。

同时,你必须用手拿走它们。有一个 doccode test 显示如何:

/*********************************************************
* Can can get enum types from raw EF-generated metadata
* Related to feature request #2271: Extract enum values from server metadata
*************************************************************/
asyncTest("can get enum type from raw EF-generated metadata", function() {

    var serviceName = testFns.foosMetadataServiceName;
    var store = new breeze.MetadataStore();
    store.fetchMetadata(serviceName)
        .then(metaSuccess, metaFail).fail(handleFail).fin(start);

    function metaSuccess(rawMetadata) {
        ok(true, "foos metadata fetched");
        var enumType = rawMetadata.schema && rawMetadata.schema.enumType;
        if (enumType && enumType.name ==='Color') {
            var members = enumType.member;
            ok(members.length,
                "should have several members; members are: " + JSON.stringify(members));
        } else {
            ok(false, "metadata should have had one enumType, 'Color'.");
        }
    }

    function metaFail(error) {
        ok(false, "foos metadata fetch failed: " + error.message);
    }

});
.

其他提示

我们正在使用Bibernate和Wand来做同样的事情。为NHibernate生成的元数据是标准的Breeze元数据,不包含架构部分。任何想法如何做到这一点?

编辑:要修复我们的问题,我在元数据中添加了所有使用的枚举的列表(如结构型节点)。然后,在检索元数据时,我们将其缓存在客户端上。 https://github.com/lnu/breze.server.net/commit/65ad687aad13c4dd9f4a6ab6a3d09e407e2b58ec

感谢

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top