首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dataproperties数组的addentitytype不起作用

使用dataproperties数组的addentitytype不起作用
EN

Stack Overflow用户
提问于 2013-06-04 01:34:55
回答 1查看 299关注 0票数 0

我正在和微风一起玩打字游戏。我正在尝试使用以下typescript代码创建一个类型:

代码语言:javascript
复制
   var eto = <breeze.EntityTypeOptions>new Object();
   eto.shortName = "type1";
   eto.namespace = "mod1";
   eto.dataProperties = new Array();
   eto.autoGeneratedKeyType = breeze.AutoGeneratedKeyType.Identity;

   var dpo = <breeze.DataPropertyOptions>new Object();
   dpo.name = "id";
   dpo.dataType = breeze.DataType.Int32;
   dpo.isNullable = false;
   dpo.isPartOfKey = true;

   var dp = new breeze.DataProperty(dpo);
   eto.dataProperties.push(dp);

   dpo = <breeze.DataPropertyOptions>new Object();
   dpo.name = "prop1";
   dpo.dataType = breeze.DataType.Int32;
   dpo.isNullable = false;
   dpo.isPartOfKey = false;

   dp = new breeze.DataProperty(dpo);
   eto.dataProperties.push(dp);            

   var et = new breeze.EntityType(eto);
   store.addEntityType(et);
   store.registerEntityTypeCtor(et.shortName, type1);

但是,下面这行代码失败了:

代码语言:javascript
复制
   store.addEntityType(et);

当"dataProperties“是一个数组,而不是一个对象时,就像上面的例子一样,看起来有个问题……我是一个javascript新手,所以我怀疑我做错了什么……但我怀疑下面的微风代码,特别是下面的代码:

代码语言:javascript
复制
            propObj.forEach(entityType.addProperty);

永远不会起作用,因为addProperty方法的实现利用了"this“上下文……再一次,我可能错了,在这种情况下,如果有人能帮我一把,我将不胜感激。谢谢

代码语言:javascript
复制
    // Used by both ComplexType and EntityType
    function addProperties(entityType, propObj, ctor) {

        if (!propObj) return;
        if (Array.isArray(propObj)) {
            propObj.forEach(entityType.addProperty);
        } else if (typeof (propObj) === 'object') {
            for (var key in propObj) {
                if (__hasOwnProperty(propObj, key)) {
                    var value = propObj[key];
                    value.name = key;
                    var prop = new ctor(value);
                    entityType.addProperty(prop);
                }
            }
        } else {
            throw new Error("The 'dataProperties' or 'navigationProperties' values must         be either an array of data/nav properties or an object where each property defines a data/nav property");
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-04 02:52:18

编辑:这个问题已经从1.3.5版本开始修复了,现在可以使用了。

好的,这是一个错误,将在今天晚些时候或明天发布的版本中修复。感谢您找到并报告它。:)

同时,有一个简单的解决方法。只需在添加属性之前创建EntityType即可。例如(使用原始的js而不是TypeScript,但你会明白的)。

代码语言:javascript
复制
    var eto = {}
    eto.shortName = "type1";
    eto.namespace = "mod1";
    eto.dataProperties = new Array();
    eto.autoGeneratedKeyType = breeze.AutoGeneratedKeyType.Identity;
    var et = new breeze.EntityType(eto);

    var dpo = {};
    dpo.name = "id";
    dpo.dataType = breeze.DataType.Int32;
    dpo.isNullable = false;
    dpo.isPartOfKey = true;

    var dp = new breeze.DataProperty(dpo);
    et.addProperty(dp);

    dpo = {};
    dpo.name = "prop1";
    dpo.dataType = breeze.DataType.Int32;
    dpo.isNullable = false;
    dpo.isPartOfKey = false;

    dp = new breeze.DataProperty(dpo);
    et.addProperty(dp);

    store.addEntityType(et);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16902520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档