0

我通过定义模型(到目前为止只有一个实体/模型)提供了元数据:

function init(store){
        addSerieType(store);
    }

    function addSerieType(store){
        store.addEntityType({
            shortName: "Serie",
            namespace: "xxx",
            defaultResourceName: "Serien",
            //autoGeneratedKeyType: breeze.AutoGeneratedKeyType.Identity,
            dataProperties:{
                id: { dataType: breeze.DataType.Int32, isNullable: false, isPartOfKey: true },
                kat: { dataType: breeze.DataType.Int32, isNullable: false },
                bez: { dataType: breeze.DataType.String, maxLength: 64, isNullable: false, 
                    validators: [ breeze.Validator.required(), breeze.Validator.maxLength( {maxLength: 64})]     // Add client-side validation to 'title' 
                },
                jahr: { dataType: breeze.DataType.Int32, isNullable: false },
                grp: { dataType: breeze.DataType.Int32, isNullable: false },
                bem: { dataType: breeze.DataType.String, maxLength: 1024, isNullable: false, 
                    validators: [ breeze.Validator.maxLength( {maxLength: 1024})]     // Add client-side validation to 'title' 
                }
            }
        });

        store.setEntityTypeForResourceName("Serien", "Serie");
        store.registerEntityTypeCtor("Serie", null, serieInitializer);
    }

    function serieInitializer(serie){
        serie.errorMessage = ko.observable();
    }

    return{
        init: init
    }

从 PHP/Doctrine 返回的 JSON 包括列$id="Serie.id"(例如 1,2,3 ...)和$type="Serie". 所有列和属性名称均为小写,NamingConvention 设置为无。我得到一个空实体 - 具有提供的默认值。

对于测试,我创建了一个像这样的新实体:

var s = manager.createEntity("Serie", { id: 42, bez: "Test1", jahr: 2999} );

这行得通,我ko.observable在实体中获取属性,并将实体物化到缓存中。

为什么我不能从 JSON 结果中获取实体?我已经将服务器元数据设置为 false,提供了一个模型,一切都匹配,但是......实体是空的。完全没有错误。有什么提示吗?谢谢。

4

3 回答 3

0

您的查询是什么样的?Breeze 需要知道为任何查询返回的 EntityType,这可以通过以下任何方式完成:

  • 通过在 MetadataStore 中建立的 ResourceName/EntityType 映射。这可以添加到使用 MetadataStore.setEntityTypeForResourceName 方法
  • 通过对 EntityQuery() 的 toType() 调用
  • 通过 DataService 或 EntityQuery 的 JsonResultsAdapter 中的规范。“默认” JsonResultsAdapter 假定 JSON.NET 序列化,这不太可能适用于 PHP 后端,因此您可能希望为 PHP 创建一个自定义 JsonResultsAdapter 并将其添加到您的 DataService。

Breeze 无法将您的查询结果映射到实体类型的标准症状是结果不会变成“可观察对象”。如果 Breeze 无法确定任何返回结果的 EntityType,它只会将它们保留为“本机”json 格式。

于 2013-07-29T15:49:24.767 回答
0

(这可能对任何人都有帮助)

如果您正在使用 Doctrine 2 (PHP) 和微风 js,您可以试试这个库:https ://github.com/adrotec/breeze.server.php

于 2014-06-12T10:02:23.767 回答
0

请查看这个类似的 StackOverflow 问题,我将引导您完成诊断。提出这个问题的人也在使用 PHP 服务器。

于 2013-07-30T01:05:34.710 回答