0

我目前正在研究与这些技术相关的概念证明。

除了首先使用 EF 代码之外,我基本上已经实现了本文中的建议。

使用 Breeze 使用 ASP.NET Web API OData 服务

一个例外,即

“未捕获的类型错误:无法读取未定义的属性‘propertyRef’”

执行这段客户端代码时抛出:

<script type="text/javascript">
    var my = {}; //my namespace
    $(function () {
        debugger;
        var serverAddress = "/odata/";
        breeze.config.initializeAdapterInstances({ dataService: "OData" });
        var manager = new breeze.EntityManager(serverAddress);

        my.vm = {

            entities: ko.observableArray([]),
            load: function () {
                var query = breeze.EntityQuery.from("Customers");

                manager.executeQuery(query, function (data) {

                    var results = data.results;
                    $.each(data.results, function (i, c) {
                        my.vm.entities.push(c);
                    });

                })
                .fail(function (e) {

                    alert(e);
                }); ;
            }
        }

        my.vm.load();
        ko.applyBindings(my.vm);
    });

</script>

源于此在微风.debug.js

    function convertFromODataEntityType(odataEntityType, schema, metadataStore) {
    var shortName = odataEntityType.name;
    var ns = getNamespaceFor(shortName, schema);
    var entityType = new EntityType({
        shortName: shortName,
        namespace: ns
    });
    ---> **EXCEPTION HERE**--->var keyNamesOnServer = toArray(odataEntityType.key.propertyRef).map(__pluck("name"));
    toArray(odataEntityType.property).forEach(function (prop) {
        convertFromODataDataProperty(entityType, prop, schema, keyNamesOnServer);
    });

    toArray(odataEntityType.navigationProperty).forEach(function (prop) {
        convertFromODataNavProperty(entityType, prop, schema);
    });
    metadataStore.addEntityType(entityType);
    return entityType;
}

通过 url 查询 odata 服务会返回我想要的结果,因此它似乎不是数据检索问题。

我已经进行了一些搜索,原因被认为是微风尚未处理继承的类型。

在我的例子中,我没有使用继承类型。

欢迎任何建议。

4

2 回答 2

2

这看起来像是没有为相关实体类型定义“键”的问题。是否在底层服务器端实体类型上定义了一个键?

于 2013-04-26T15:46:49.807 回答
0

你说的对,关键是没有定义。查看浏览器中的 ~/odata/$metadata 未定义底层 CustomerId

<Key>
 <PropertyRef Name="CustomerId"/>
</Key>
于 2013-05-02T16:31:28.577 回答