没有服务器元数据的Breezejs

时间:2012-12-24 21:20:38

标签: breeze

玩breezejs。这是一个代码:

var dataService = new breeze.DataService({
                    serviceName: "/api/articles",
                    hasServerMetadata: false
                });
                var ms = new breeze.MetadataStore();

                var manager = new breeze.EntityManager({
                    dataService: dataService,
                    metadataStore: ms
                });

                var query = new breeze.EntityQuery().from("Query");

                manager.executeQuery(query).then(function (data) {
                    // this fails
                    var articles = manager.executeQueryLocally(query);
                    console.log(articles);
                }).fail(function(e) {
                    alert(e);
                });

没有行 var articles = manager.executeQueryLocally(query); 一切正常。有了它,它说“entityType为null”。我想我需要添加实体类型但不确定如何?

2 个答案:

答案 0 :(得分:3)

从v 0.81.2开始,现在有一个使用breeze而没有服务器元数据的示例,针对内存服务器端数据存储区运行。该样本称为ToDo-NoEF,可从微风网站下载。

答案 1 :(得分:1)

可以通过AddEntityType方法将EntityType信息添加到metadataStore。可以通过EntityManager的metadataStore属性轻松访问metadataStore。

我们还将在下周左右使用breeze添加一个没有服务器元数据的示例。但是现在......

以下是将实体类型添加到metadataStore的简单示例。这只是一个部分示例,因为还需要添加其他相关类型来完成它。

        var et = new EntityType({
            shortName: "Person",
            namespace: "Sample_WebApi.Models"
        });
        et.addProperty( new DataProperty({
            name: "personId",
            dataType: DataType.Int32,
            isNullable: false,
            isPartOfKey: true,
        }));
        et.addProperty(new DataProperty({
            name: "firstName",
            dataType: DataType.String,
            isNullable: false,
        }));
        et.addProperty(new DataProperty({
            name: "lastName",
            dataType: DataType.String,
            isNullable: false,
        }));
        et.addProperty(new DataProperty({
            name: "birthDate",
            dataType: DataType.DateTime,
            isNullable: true
        }));
        et.addProperty(new NavigationProperty({
            name: "meals",
            entityTypeName: "Meal",
            isScalar: false,
            associationName: "personMeals"
        }));
        metadataStore.addEntityType(et);