我在「NoDB」模式下使用Breezejs,意思是我寫的手放在我的元數據。當我創建的OData參數的微風查詢我的ID添加過濾器,說Breezejs自動GUID解析
new breeze.Predicate('iD', datacontext.breeze.FilterQueryOp.Equals, myId)
的VAR身份識別碼確實是一個GUID值(儘管它定義爲一個字符串),但在我的數據庫,並在我的兩個服務器 - 側和客戶端模型是一個字符串(我不能改變數據庫結構)。在我的元數據模型的屬性定義爲
dataProperties: {
...
iD: { dataType: DataType.String },
...
}
(我知道屬性名字看起來怪異,但我有,因爲我有breeze.NamingConvention.camelCase.setAsDefault(在我的DataContext使用這個語法),和酒店對數據庫名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的官方網站上我沒有發現任何關於這方面的信息。