我已经好几天了.
想象一下,你有一个汽车销售管理应用程序.你卖不同的型号.您的汽车模型有50个属性.仅举例来说,假设你想卖掉布加迪威龙.现在,你刚收到5辆这样的车.所以,我登录我的应用程序,创建第一个具有特定ID的Bugatti Veyron.然后我想添加第二个,但有一个问题 - 我将不得不再次写下所有这些属性!我想要一个复制按钮,我只是更改序列号,微风会改变ID和瞧,那里有两辆车!
为了黑客的缘故,起初我创建了这个解决方案:
newCar(datacontext.createCar()); newCar().property1(oldCar().property1()); newCar().property2(oldCar().property2()); ...
它很难看,经过我的证明我可以做到,当然,请求申请是为了让一切都可以复制 - 我不会这样做!某处必须有副本.在挖掘了很多东西后,甚至试图在微风中改变一些东西,我做不了类似的事情:
manager.createEntity('Car', oldCar);
现在,最新的解决方案比第一个解决方案更可行,但仍然需要比我想要的更多的代码,并且不像它那样直观:
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);
有没有其他"更清洁"的方法来制作具有完全相同属性的新实体,但当然,不同的ID?
我应该提到Car实体中有一些ICollections,但是这个hack-ish解决方案忽略了可以改进的那些,但是目前我自己处理了一些.forEach循环.