Asp.net mvc 4 创建新的upshot js实体

Asp.net mvc 4 创建新的upshot js实体,asp.net-mvc-4,upshot,Asp.net Mvc 4,Upshot,我正在使用ASP.NETMVC4beta构建一个单页应用程序站点 示例应用程序讨论添加新实体,并为其产品实体使用构造函数 然而,我有很多实体类型,我不打算为每一种类型编写构造函数。这就是我创建新实体的方式(name是数据源的名称,dataTarget.upshot.upshotData是我从GetEntities方法返回的实体列表 在咖啡脚本中 newItem = {} for field, def of upshot.metadata(upshot.dataSources[name]._ent

我正在使用ASP.NETMVC4beta构建一个单页应用程序站点

示例应用程序讨论添加新实体,并为其产品实体使用构造函数

然而,我有很多实体类型,我不打算为每一种类型编写构造函数。这就是我创建新实体的方式(
name
是数据源的名称,
dataTarget.upshot.upshotData
是我从GetEntities方法返回的实体列表 在咖啡脚本中

newItem = {}
for field, def of upshot.metadata(upshot.dataSources[name]._entityType).fields
    do (field, def) ->
    if def.array
        newItem[field] = new ko.observableArray()
    else
        newItem[field] = new ko.observable()
        upshot.addEntityProperties newItem, upshot.dataSources[name]._entityType
        dataTarget.upshot.upshotData.push newItem 
我的问题是,这是最好的方法还是我遗漏了什么?我很惊讶,结果似乎没有createEntity方法

在javascript中

newItem = {};
_ref = upshot.metadata(upshot.dataSources[name]._entityType).fields;
_fn = function(field, def) {
    if (def.array) {
       return newItem[field] = new ko.observableArray();
    } else {
       return newItem[field] = new ko.observable();
    }
};
      for (field in _ref) {
        def = _ref[field];
        _fn(field, def);
      }
      upshot.addEntityProperties(newItem, upshot.dataSources[name]._entityType);
      dataTarget.upshot.upshotData.push(newItem);

这将使用映射到可观察对象的实体属性创建对象,并允许您设置属性(请参见SomeProperty:“我的值”)。

Hi这会使用字段初始化项目-但是数组属性不会设置为可观察数组,而只是可观察数组。
var newThing = {};
var typeName = "MyType:#MyNamespace";
upshot.map({ SomeProperty: "my value" }, typeName, newThing);
upshot.addEntityProperties(newThing, typeName);