这是我的场景:我希望有一个单独的集合,我可以使用SqlApi插入和查询文档,并使用Graph Api创建顶点和边缘,所有这些都在同一个集合中 . 我相信这可以考虑到我在文件中读到的内容 .

My first try was using Microsoft.Azure.Graphs.dll 使用这种方法,我能够使用Sql Api执行CRUD操作并对集合执行gremlin脚本 . 请务必注意,使用Sql api Insert命令创建的文档用作顶点 . 然后我使用连接使用Sql Api创建的文档的图形api创建边缘 . 这按预期工作 . 我遇到的唯一问题是,如果文档包含数组属性,则返回的图形Api和错误:从'System.String'到'Newtonsoft.Json.Linq.JObject'的无效转换 . 经过调查,我被告知Microsoft.Azure.Graphs.dll已被弃用,我应该使用Gremlin.Net . 我没有在任何地方读过这个程序集已被弃用,甚至在官方文档和示例中我都可以看到正在使用这个程序集 . 它真的被弃用了吗?我应该不用吗?

Then this was my second try: I moved to Gremlin.net.

  • 第一期:我正在连接最初为Sql Api创建的集合 . 当我尝试连接Gremlin.Net客户端时,它告诉我无法连接到服务器 . 当我为图表Api创建另一个数据库和集合时,我能够连接 . 结论:不可能将Gremlin.net与使用Sql Api创建的集合一起使用 . 或者是否可以使用Sql Api激活数据库中的gremlin endpoints ?

使用Graph Api的新集合,我再次尝试使用Sql Api创建文档,然后使用Graph Api进行连接 . 我看到在这种情况下,两个 endpoints 都被创建:SqlApi Gremlin . 我有一些问题使这个工作 . 例如,我必须将GraphSon编写器和读取器设置为版本2,否则我收到空引用异常 .

  • 第二个问题:我能够使用Sql Api创建文档但是我遇到了与数组属性相同的问题(示例文档{“id”:“aaa”“Prop”:[“1”,“2”]})I当我使用gremlin查询时得到相同的错误:gV('aaa')=>从'System.String'到'Newtonsoft.Json.Linq.JObject'的无效转换 . 结论:我对先前库的第一个问题没有用新的解决 .

  • 第三个问题:当我使用SqlApi查询时,json返回的边缘或顶点与使用Microsoft.Azure.Graphs.dll时收到的边缘或顶点不同 . 看起来cosmos数据库引擎根据程序集处理不同的gremlin脚本 . 我应该期待哪种json格式?

Notes:

  • 为什么我需要使用SqlApi创建顶点?因为我想用自定义对象创建属性而我无法使用graphApi:示例:{“Id”:“aaa”,“Custom”:{“Id”:456,“Code”:{“Id “:555,”名称“:”嗨“}}

  • 为什么我想使用SqlApi查询图形?因为我想访问我的自定义属性 . 因为我想使用令牌分页 . (范围gremlin函数它不是高性能的 . 它遍历从0到我想要的最后一页的所有顶点/边)

有人有关于这种情况的一些信息吗?帮助将不胜感激 .