从Gremlin.Net回复中获取POCO的最佳方式是什么?
现在我手动转换为词典:
var results = await gremlinClient.SubmitAsync<Dictionary<string, object>>("g.V()");
var result = results[0];
var properties = (Dictionary<string, object>)result["properties"];
var value = ((Dictionary<string, object>)properties["myValue"].Single())["value"];
答案 0 :(得分:2)
我发现GremlinClient
只能返回动态对象,如果你把其他东西作为类型,它就会失败(除非我做错了)。
我最终做的是将动态对象序列化为JSON,然后将其反序列化为我想要的对象类型:
var results = await gremlinClient.SubmitAsync<dynamic>("g.V()");
JsonConvert.DeserializeObject<MyResult>(JsonConvert.SerializeObject(results));
动态对象只是一个字典,但是如果你先将它序列化,那么它就具有适当的字段/属性层次结构,然后可以反序列化为你实际期望的结果。
看起来有点痛苦,不得不做额外的转换,但只有这样才能让它发挥作用。
答案 1 :(得分:0)
查看以下扩展以及如何解析结果
var resultCollection = await gremlinClient.SubmitAsync<T>(requestScript, bindings).ConfigureAwait(false);
return resultCollection.FirstOrDefault();
<强> CODE 强>
答案 2 :(得分:0)
您可以使用类似于以下的MyClass来获取属性
ionic serve
并在其中使用
class ProviderProperties {
public object Name { get; set; }
public object contact { get; set; }
public object requesttype { get; set; }
public object address { get; set; }
public object phone { get; set; }
public object description { get; set; }
public object otherState { get; set; }
public object otherCity { get; set; }
public object addressStreet { get; set; }
}
class MyClass {
public string id { get; set; }
public string label { get; set; }
public string type { get; set; }
public ProviderProperties properties { get; set; }
}
答案 3 :(得分:0)
尝试这种方法
IGremlinClient janusClient = JanusGraphClientBuilder.BuildClientForServer(new GremlinServer("localhost", 8182)).Create();
GraphTraversalSource g = Traversal().WithRemote(new DriverRemoteConnection(janusClient));
IList<Vertex> x = g.V().HasLabel("YourLabel").Has("YourpPopertyName", "some value").ToList();