我使用Breeze JS根据以下内容创建客户端扩展属性:http://www.breezejs.com/documentation/extending-entities
我的构造函数声明了两个camelCase属性:
function Building() {
this.fullAddress = "";
this.street = "";
}
我使用我的元数据存储注册构造函数,如下所示:
store.registerEntityTypeCtor("Building", Building);
我按照http://www.breezejs.com/documentation/naming-convention
使用camelCase命名惯例当我的Web API返回PascalCase FullAddress和Street属性时,我的构建实体无法正确设置其属性。它只有在我修改构造函数以在PascalCase中声明客户端属性时才有效。
据我了解,命名约定应自动将PascalCase服务器端属性名称映射到客户端camelCase属性名称。有人可以澄清这种行为吗?我的Building实体的所有其他属性(不是扩展属性)都是从PascalCase正确映射到camelCase。
答案 0 :(得分:0)
在您引用的页面上解释了原因 -
isBeingEdited属性只是客户端的属性 客户实体。 "客户"服务器上的类没有 isBeingEdited属性和后备数据库没有 "客户"中的isBeingEdited列表格。
在您的情况下,您的构造函数包含Breeze认为未映射的属性。当你切换到PascalCase时它起作用的原因是一个叫做机会的东西:)并且是不好的做法。
如果您的属性确实是服务器端,并且您希望保持这种方式,那么只需考虑重命名构造函数中的属性以匹配从服务器返回的属性。
答案 1 :(得分:0)
我相信我们在1.4.14中改变了breeze的行为,通过namingConvention转换器传递未映射的属性,之前我们没有这样做。你能在1.4.14上试试你的代码吗?