Это мой сценарий: я хочу иметь одну единственную коллекцию, где я могу вставлять и запрашивать документы, используя SqlApi, и создавать вершины и ребра, используя Graph Api, все в одной коллекции.Я полагал, что это было возможно, принимая во внимание то, что я прочитал в документации.
Моя первая попытка была использовать Microsoft.Azure.Graphs.dll С этим подходом я смог сделатьCRUD-операции с Sql Api и выполнение сценариев gremlin для коллекции.Важно отметить, что документы, созданные с помощью команды Sql api Insert, используются в качестве вершин.Затем я создал ребра, используя график API, соединяющий документы, созданные с помощью Sql Api.Это работает как ожидалось.Единственная проблема, с которой я столкнулся, заключалась в том, что если документ содержит свойство массива, которое вернул график Api, и ошибку: Неверное приведение из «System.String» к «Newtonsoft.Json.Linq.JObject». После исследованиясказал, что Microsoft.Azure.Graphs.dll устарела, и вместо этого мне следует использовать Gremlin.Net.Я нигде не читал, что эта сборка устарела, и даже в официальной документации и примерах я вижу, что эта сборка используется.Это действительно не рекомендуется?Разве я не должен его использовать?
Тогда это была моя вторая попытка: я перешел на Gremlin.net.
- Первая проблема: я подключался к коллекциисоздан изначально для Sql Api.Когда я пытался соединиться с Gremlin.Net Client, он сказал мне, что не может соединиться с сервером.Когда я создал другую базу данных и коллекцию для графа Api, я смог подключиться. Вывод: невозможно использовать Gremlin.net с коллекцией, созданной с помощью Sql Api.Или можно активировать конечную точку gremlin в базе данных с помощью Sql Api?
Используя новую коллекцию для Graph Api, я снова попытался создать документы с помощью Sql Api, а затем подключиться с помощью GraphАпи.Я вижу, что в этом случае создаются обе конечные точки: SqlApi + Gremlin.У меня было несколько проблем с этим.Например, я должен был установить Writer и считыватель GraphSon на версию 2. Если нет, я получил исключение нулевой ссылки.
Вторая проблема: я смог создать документы с Sql Api, но ябыла та же проблема со свойством массива (Пример документа {"id": "aaa" "Prop": ["1", "2"]}) Я получаю ту же ошибку при запросе с gremlin: gV ('aaa') => Неверное приведение из 'System.String' к 'Newtonsoft.Json.Linq.JObject'.Заключение: Моя первая проблема с предыдущей библиотекой не была решена с новой.
Третья проблема: json вернул, когда я запрашиваю с SqlApi, ребра или вершины отличаются от полученных, когда я использовалMicrosoft.Azure.Graphs.dll.Похоже, что движок cosmos db по-разному обрабатывает сценарии gremlin в зависимости от сборки.Какой формат json мне следует ожидать?
Примечания:
-Почему мне нужно создавать вершины, используя SqlApi?Потому что я хочу создать свойства с пользовательскими объектами и не могу сделать это с graphApi: Пример: {"Id": "aaa", "Custom": {"Id": 456, "Code": {"Id": 555," Имя ":" Привет "}}
-Почему я хочу запросить график с использованием SqlApi?Потому что я хочу получить доступ к своим пользовательским свойствам.Потому что я хочу разбивать на страницы с помощью токенов.(Функция диапазона Гремлина не является перманентной. Она пересекает все вершины / ребра от 0 до последней страницы, которую я хочу)
Есть ли у кого-нибудь информация об этой ситуации?Помощь будет оценена.