亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

OData 和 Cosmos DB

OData 和 Cosmos DB

C#
慕萊塢森 2022-08-20 17:29:23
我希望在我正在處理的 ASP.NET 核心應用程序中實現 OData v4 作為查詢工具,我們的后備持久性存儲是 Cosmos DB。到目前為止,我還沒有找到一種方法來使 OData 查詢針對 DocumentQuery IQueryable 接口運行,而不會遇到某種異?;蝈e誤。我想知道是否有一種“干凈”的方式來利用OData來對抗Cosmos Document DB(而不是Table API),如果是這樣,如何?到目前為止,我所發現的只是一個使用 Framework v4.6 的非官方庫,但沒有官方的,而且我發現的有關實現 OData 的所有文檔幾乎完全針對實體框架或內存數據存儲運行。
查看完整描述

3 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

我知道這并不是對我的問題最有見地的答案,但這里的正確答案是不要試圖這樣做。如果你曾經處于這樣一個位置,有人要求你試圖將兩種并不真正結合在一起的技術結合在一起,那就說“不”并處理后果。


查看完整回答
反對 回復 2022-08-20
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

如果您使用的是SQL api,并且只需要$orderby,$top和$skip等基本內容,則OData與Cosmos的集成并不難。這是一個生成正確的 SQL 的問題。


如果你需要更多,它會變得有點困難。無論如何,我用這個NuGet庫做了一些簡單的測試。它似乎至少從我的簡單測試中起作用。


        var oDataToSqlTranslator = new ODataToSqlTranslator(new SQLQueryFormatter());

        var select = oDataToSqlTranslator.Translate(odataQueryOptions, TranslateOptions.SELECT_CLAUSE);

        var where = oDataToSqlTranslator.Translate(odataQueryOptions, TranslateOptions.WHERE_CLAUSE);

        var order = oDataToSqlTranslator.Translate(odataQueryOptions, TranslateOptions.ORDERBY_CLAUSE);

        var top = oDataToSqlTranslator.Translate(odataQueryOptions, TranslateOptions.TOP_CLAUSE);

        var all = oDataToSqlTranslator.Translate(odataQueryOptions, TranslateOptions.ALL);

        

        log.LogInformation("SQL select => " + select);

        log.LogInformation("SQL where  => " + where);

        log.LogInformation("SQL order  => " + order);

        log.LogInformation("SQL all    => " + all);

給定此 URL 作為輸入:


http://localhost:7071/api/v1/invoices/customer/20?$top=2&$select=CustomerId&$filter=InvoiceNumber eq 'xxx'&orderby=brand


日志顯示以下內容:


SQL select => SELECT c.CustomerId FROM c 

SQL where  => WHERE c.InvoiceNumber = 'xxx' 

SQL order  => ORDER BY c.InvoiceNumber ASC 

SQL all    => SELECT TOP 2 c.CustomerId FROM c WHERE c.InvoiceNumber = 'xxx' ORDER BY c.InvoiceNumber ASC 



查看完整回答
反對 回復 2022-08-20
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

怎么樣 - 將OData轉換為SQL,然后在CosmosDB上執行它 https://github.com/Azure/azure-odata-sql-js


查看完整回答
反對 回復 2022-08-20
  • 3 回答
  • 0 關注
  • 152 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號