Как создавать графики Gremlin из кода C # .Net? - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь интегрировать мой проект C # .Net с Azure CosmosDb, используя язык запросов Gremlin. Мне нужна помощь для создания графика из кода C # вместо того, чтобы вручную создавать его с сервера. Есть предложения?

Ответы [ 2 ]

0 голосов
/ 24 июля 2018

Gremlin.Net.CosmosDb

Вспомогательная библиотека при использовании Gremlin.Net в сочетании с графом БД Cosmos

https://github.com/evo-terren/Gremlin.Net.CosmosDb

Использование вершины и ребра со строгой типизациейОбъекты Создание строго типизированных объектов вершин и ребер для определения свойств и помощи в десериализации.

using Gremlin.Net.CosmosDb.Structure;

[Label("person")]
public class PersonVertex : VertexBase
{
    public string Name { get; set; }

    public DateTimeOffset Birthdate { get; set; }
}

var query = g.V<PersonVertex>().Has(v => v.Name, "Todd").Property(v => v.Birthdate, DateTimeOffset.Now);
var response = await graphClient.QueryAsync(query);

foreach (var vertex in response)
{
    Console.WriteLine(vertex.Birthdate.ToString());
    Console.WriteLine(vertex.Name);
}
0 голосов
/ 11 мая 2018

К сожалению, в настоящее время я не знаю о строго типизированной .NET-библиотеке, доступной для Gremlin, которая может напрямую подключаться к Cosmos.

Однако довольно просто написать оболочку, которая выполняет общие функции gremlinв C #.

Вот пример легкого ORM, который я недавно начал: https://github.com/odds-bods/CosmicGraph/blob/master/CosmicGraph/CosmicGraphClient.cs

var vertex = await cosmic.AddVertexIfNotExistsAsync(
    new PersonVertex
    {
        Id = Guid.Empty.ToString(),
        Label = "Fred Smith",
        FirstName = "Fred",
        LastName = "Smith"
    }
);

В идеале функциональный API (зеркальное отображение API Gremlin) будет лучше для крупных проектов, однакоэто потребует дополнительной работы.

...