【发布时间】:2023-04-07 10:40:01
【问题描述】:
我在“NoDB”模式下使用 Breezejs,这意味着我手动编写元数据。当我使用 OData 参数创建 Breeze 查询时,我会按 id 添加过滤器,比如
new breeze.Predicate('iD', datacontext.breeze.FilterQueryOp.Equals, myId)
var myId 确实是一个 GUID 值(尽管它被定义为一个字符串),但在我的数据库以及我的服务器端和客户端模型中,它是一个字符串(我无法更改数据库结构)。我的元数据模型中的属性定义是
dataProperties: {
...
iD: { dataType: DataType.String },
...
}
(我知道属性名称看起来很奇怪,但我必须使用这种语法,因为我的数据上下文中有微风.NamingConvention.camelCase.setAsDefault(),并且数据库上的属性名称是 ID 大写) 当我执行查询时,我看到 WebAPI url 中相应的 oData 过滤器选项就像
$filter=ID eq guid'65BEB144-5C0C-4481-AC70-5E61FDAA840D'
这导致我出现此服务器错误:在类型“System.Guid”和“System.String”之间未定义强制运算符。 有没有办法禁用 GUID 的这种自动“解析”并将它们保留为字符串? 我通过直接在微风的源代码中删除解析暂时解决了这个问题,这样我的 webAPI 调用看起来像
$filter=ID eq '65BEB144-5C0C-4481-AC70-5E61FDAA840D'
但我不喜欢这个解决方案,如果有更好的解决方案,我会很高兴,比如以某种方式参数化这种行为。我在 Breeze 的官方网站上没有找到任何相关信息。
【问题讨论】:
标签: javascript breeze