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

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

问题描述

我想要得到的自定义属性,下面所提到的,在微风的DataService(客户端)。

 命名空间Tam.Framework.Web.Models
{
    [ViewAttribute(应用程序/视图/ Employee.html)] //这个自定义类属性
    公共类员工:BaseEntity
    {
        保护覆盖字符串OnGetDescriptor()
        {
            返回一些说明;
        }        公共字符串名字{获得;组; }        [显示(名称=姓氏)] //该自定义属性特性
        公共字符串名字{获得;组; }
    }
}


解决方案

  VAR经理= configureBreezeManager();        功能configureBreezeManager(){        breeze.NamingConvention.camelCase.setAsDefault();
        VAR经理=新breeze.EntityManager(API /清风');
        model.configureMetadataStore(mgr.metadataStore);
        mgr.fetchMetadata(函数(元数据){
            返回initializeMetadataStore(mgr.metadataStore,元数据);
        });
        返回经理;
    };
       功能initializeMetadataStore(metadataStore,元数据){
        breeze.NamingConvention.defaultInstance = breeze.NamingConvention.none;
        VAR metadataType,metadataProperty,entityProperty,I,J;
        对于(i = 0; I< metadata.schema.entityType.length;我++){
            metadataType = metadata.schema.entityType [I]
            VAR的EntityType = metadataStore.getEntityType(metadataType.name);
            为(J = 0; J< metadataType.property.length; J ++){
                metadataProperty = metadataType.property [J]。                    entityProperty = entityType.getProperty(metadataProperty.name);                如果(entityProperty){
                    如果(typeof运算metadataProperty.displayName!==未定义){
                        entityProperty.displayName = metadataProperty.displayName;
                    }
                    如果(typeof运算metadataProperty.displayOrder!==未定义){
                        entityProperty.displayOrder = metadataProperty.displayOrder;
                    }
                    如果(typeof运算metadataProperty.autoGenerateField!==未定义){
                        entityProperty.autoGenerateField = metadataProperty.autoGenerateField;
                    }
                    如果(typeof运算metadataProperty.allowEmptyStrings!==未定义){
                        entityProperty.allowEmptyStrings = metadataProperty.allowEmptyStrings;
                    }
                }
            }
        }    }        VAR READDATA =功能(的entityName,observableResults,showLog){        如果(!||的entityName!observableResults)
            返回null;        VAR的查询=新breeze.EntityQuery()
            。从(的entityName);
        返回manager.executeQuery(查询)
         。然后(querySucceeded)
         .fail(queryFailed);
    }    功能readEmployee(){
    返回breezeDataService.readData(员工,员工,真正的)。然后(函数(){        VAR propertyDisplayName =雇员()[0] .entityType.getProperty('的lastName')显示名; //错误未定义DISPLAYNAME
     }
    }

当我通过READDATA功能得到实体的列表清单(observableResults [0])没有任何显示名,但我想补充的displayName和initializeMetadataStore功能检查是正确的。

最后!!!!!我觉得这是因为breeze.NamingConvention.camelCase.setAsDefault()的;

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
     }
    }

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

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

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

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