gpt4 book ai didi

javascript - Breeze 使用 PascalCased 初始值创建实体

转载 作者:行者123 更新时间:2023-11-28 06:37:25 24 4
gpt4 key购买 nike

我有一个 Angular + Breeze + WebApi(EF) 设置,在查询数据时效果非常好。默认情况下,breezeProvider在客户端设置为camelCase,在服务器端设置为PascalCase。

bp.NamingConvention.camelCase.setAsDefault();

我遇到的问题是通过 signalR 将新数据推送到我的应用程序时。数据从 .NET Stack 到达 PascalCased(Breeze 明确表示不要弄乱服务器上的大小写)。然后,我使用标准工厂创建一个新实体,并尝试使用传递的值对其进行初始化。由于初始值哈希全部采用 PascalCased,因此大多数属性无法正确初始化。有没有办法告诉 Breeze 它应该像查询时一样转换这些数据?我还没有成功。基本上,我只是希望 Breeze 像对待它接收到的所有数据一样对待它。

function onSignalRData(call){
var callType = manager.metadataStore.getEntityType("Call");

// call json from server is like { Id: 1, Name: "Paul", IsActive: true }
// I think Breeze expects { id: 1, name: "Paul", isActive: true }
var newCall = callType.createEntity(call);
}

有什么建议吗?我看到 Breeze 提到了手动定义的命名约定,但我在这里并没有做任何奇怪的事情,只是做了与 Breeze 在查询上但在创建初始值设定项中所做的相同的事情。

最佳答案

这可能不是最好的解决方案,但它似乎对我有用。我用的方法和formatting json data to be camelCased一样并使用 reviver 函数将数据重新解析为驼峰命名法。令我惊讶的是, Breeze 实体管理器.createEntity(...) 中没有管道 block 可以处理这个问题。

function reviver(key, val) {
if (key)
this[key.charAt(0).toLowerCase() + key.slice(1)] = val;
else
return val;
}

var parsed = JSON.parse(myjson, reviver);

关于javascript - Breeze 使用 PascalCased 初始值创建实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34147219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com