小编Dom*_*tus的帖子

Breeze从现有实体创建实体

我已经好几天了.

想象一下,你有一个汽车销售管理应用程序.你卖不同的型号.您的汽车模型有50个属性.仅举例来说,假设你想卖掉布加迪威龙.现在,你刚收到5辆这样的车.所以,我登录我的应用程序,创建第一个具有特定ID的Bugatti Veyron.然后我想添加第二个,但有一个问题 - 我将不得不再次写下所有这些属性!我想要一个复制按钮,我只是更改序列号,微风会改变ID和瞧,那里有两辆车!

为了黑客的缘故,起初我创建了这个解决方案:

newCar(datacontext.createCar());
newCar().property1(oldCar().property1());
newCar().property2(oldCar().property2());
...
Run Code Online (Sandbox Code Playgroud)

它很难看,经过我的证明我可以做到,当然,请求申请是为了让一切都可以复制 - 我不会这样做!某处必须有副本.在挖掘了很多东西后,甚至试图在微风中改变一些东西,我做不了类似的事情:

manager.createEntity('Car', oldCar);
Run Code Online (Sandbox Code Playgroud)

现在,最新的解决方案比第一个解决方案更可行,但仍然需要比我想要的更多的代码,并且不像它那样直观:

        var newObject = {};
        manager.metadataStore._structuralTypeMap[oldCar.entityType.name].dataProperties.forEach(function (singleProperty) {
                if (!singleProperty.isPartOfKey)
                newObject[singleProperty.name] = oldCar[singleProperty.name];
            });
        var newCar = manager.createEntity('Equipment', newObject);
Run Code Online (Sandbox Code Playgroud)

有没有其他"更清洁"的方法来制作具有完全相同属性的新实体,但当然,不同的ID?

我应该提到Car实体中有一些ICollections,但是这个hack-ish解决方案忽略了可以改进的那些,但是目前我自己处理了一些.forEach循环.

javascript breeze

4
推荐指数
1
解决办法
2375
查看次数

标签 统计

breeze ×1

javascript ×1