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 article = manager.executeQueryLocally(query); все в порядке. При этом он говорит, что «entityType is null». Я предполагаю, что мне нужно добавить тип сущности, но не знаю, как это сделать?


person Andrej Kaurin    schedule 24.12.2012    source источник


Ответы (2)


Начиная с версии 0.81.2, теперь есть пример использования breeze без метаданных сервера, работающий с хранилищем данных на стороне сервера в памяти. Образец называется ToDo-NoEF и доступен для скачивания с сайта breeze.

person Jay Traband    schedule 03.01.2013

Информация EntityType может быть добавлена ​​в хранилище метаданных с помощью метода AddEntityType. Доступ к хранилищу метаданных проще всего получить через свойство metadataStore объекта EntityManager.

Мы также добавим образец с использованием breeze без метаданных сервера в течение следующей недели или около того. Но сейчас...

Вот простой пример добавления типов Entity в хранилище метаданных. Это лишь частичный пример, потому что для его завершения необходимо будет добавить и другие связанные типы.

        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); 
person Jay Traband    schedule 27.12.2012
comment
Я проверил это, но безуспешно. Я буду ждать вашего примера, который вы там упомянули. Спасибо. - person Andrej Kaurin; 27.12.2012