Breeze js客户端camelCase扩展属性未从PascalCase服务器属性映射

时间:2014-06-30 19:16:36

标签: javascript breeze asp.net-web-api asp.net-web-api2

我使用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。

2 个答案:

答案 0 :(得分:0)

在您引用的页面上解释了原因 -

  

isBeingEdited属性只是客户端的属性   客户实体。 "客户"服务器上的类没有   isBeingEdited属性和后备数据库没有   "客户"中的isBeingEdited列表格。

在您的情况下,您的构造函数包含Breeze认为未映射的属性。当你切换到PascalCase时它起作用的原因是一个叫做机会的东西:)并且是不好的做法。

如果您的属性确实是服务器端,并且您希望保持这种方式,那么只需考虑重命名构造函数中的属性以匹配从服务器返回的属性。

答案 1 :(得分:0)

我相信我们在1.4.14中改变了breeze的行为,通过namingConvention转换器传递未映射的属性,之前我们没有这样做。你能在1.4.14上试试你的代码吗?