如何使用从属性属性中提取的元数据添加扩展微风实体类型 [英] how to add extend breeze entity types with metadata pulled from property attributes

查看:21
本文介绍了如何使用从属性属性中提取的元数据添加扩展微风实体类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在微风数据服务(客户端)中获取下面提到的自定义属性.

I want to get the custom attributes, mentioned below, in breeze dataService (client side).

namespace Tam.Framework.Web.Models
{
    [ViewAttribute("app/views/Employee.html")]//this custom class attribute
    public class Employee : BaseEntity
    {
        protected override string OnGetDescriptor()
        {
            return "some description";
        }

        public string FirstName { get; set; }

        [Display(Name = "LAST NAME")]//this custom property attribute
        public string LastName { get; set; }
    }
}

推荐答案

var manager = configureBreezeManager();

        function configureBreezeManager() {

        breeze.NamingConvention.camelCase.setAsDefault();
        var mgr = new breeze.EntityManager('api/breeze');
        model.configureMetadataStore(mgr.metadataStore);
        mgr.fetchMetadata(function (metadata) {
            return initializeMetadataStore(mgr.metadataStore, metadata);
        });
        return mgr;
    };




       function initializeMetadataStore(metadataStore, metadata) {
        breeze.NamingConvention.defaultInstance = breeze.NamingConvention.none;
        var metadataType, metadataProperty, entityProperty, i, j;
        for (i = 0; i < metadata.schema.entityType.length; i++) {
            metadataType = metadata.schema.entityType[i];
            var entityType = metadataStore.getEntityType(metadataType.name);
            for (j = 0; j < metadataType.property.length; j++) {
                metadataProperty = metadataType.property[j];

                    entityProperty = entityType.getProperty(metadataProperty.name);

                if (entityProperty) {
                    if (typeof metadataProperty.displayName !== 'undefined') {
                        entityProperty.displayName = metadataProperty.displayName;
                    }
                    if (typeof metadataProperty.displayOrder !== 'undefined') {
                        entityProperty.displayOrder = metadataProperty.displayOrder;
                    }
                    if (typeof metadataProperty.autoGenerateField !== 'undefined') {
                        entityProperty.autoGenerateField = metadataProperty.autoGenerateField;
                    }
                    if (typeof metadataProperty.allowEmptyStrings !== 'undefined') {
                        entityProperty.allowEmptyStrings = metadataProperty.allowEmptyStrings;
                    }
                }
            }
        }

    }





        var readData = function (entityName, observableResults, showLog) {

        if (!entityName || !observableResults)
            return null;

        var query = new breeze.EntityQuery()
            .from(entityName);


        return manager.executeQuery(query)
         .then(querySucceeded)
         .fail(queryFailed);
    }

    function readEmployee() {
    return breezeDataService.readData("Employees", employees, true).then(function () {

        var propertyDisplayName = employees()[0].entityType.getProperty('lastName').displayName;//error displayName undefined
     }
    }

当我通过 readData 函数获取实体列表时,该列表 (observableResults[0]) 没有任何 displayName 但我添加了 displayName 并通过 initializeMetadataStore 函数检查它是否正确

when I get list of entity by readData function that list (observableResults[0]) have not any displayName but I add displayName and checked it by initializeMetadataStore function is correct

终于!!!!我发现它是因为微风.NamingConvention.camelCase.setAsDefault();

FINALLY!!!!! I found it it because of breeze.NamingConvention.camelCase.setAsDefault();

这篇关于如何使用从属性属性中提取的元数据添加扩展微风实体类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆