iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 22
0
自我挑戰組

圖形資料庫是什麼,可以吃嗎 - Neo4j系列 第 22

Neo4j with C# 程式串接實作 part4 - Neo4jClient 另一個 C# 接 Neo4j 的方法

前情提要

今天應該不會再作弊了吧

就決定寫短一點了

前三篇講了如何用官方提供的 Neo4j.Driver

完成與 Neo4j 的連接與資料傳遞

今天要來講講另一個與 Neo4j 連接的套件

同時在 NuGet 上,下載數還比 Neo4j.Driver 多的套件

也就是 Neo4jClient

內容警告:

本篇文章內容,小弟我之前沒用過,是邊寫文章邊研究的
所以說如果寫得很像筆記,或是哪裡怪怪的,請多包含

Neo4jClient

好的一樣先從基本的連線開始吧

Code 如下,記得要先去 NuGet 裝 Neo4jClient

var client = new GraphClient(new Uri("http://localhost:7474"), "neo4j", "123456");

await client.ConnectAsync();

var node = await client.Cypher
                       .Match("(n:SQL)")
                       .Return(n => n.As<Sql>())
                       .ResultsAsync;

var nodeList = node.ToList();

首先前兩行就是基本連線,應該不用多說

最主要在第三行開始

var node = await client.Cypher
                       .Match("(n:SQL)")
                       .Return(n => n.As<Sql>())
                       .ResultsAsync;

有玩過 LINQ 的朋友,對於這個結構一定不陌生

Neo4jClient 最屌的就是他將 Cypher 用跟 LINQ 類似的方式呈現

至少我目前看起來是這樣覺得

string sql = $"MATCH (n:SQL) RETURN n";

前幾篇還在用 string 寫 Cypher

Neo4jClient 直接提供了看起來比較科學的玩法

用法實際上跟寫 Cypher 的順序一樣

更多的相關用法可以參考這裡,這邊就不多做贅述

再來是這個部分

.Return(n => n.As<Sql>())

這邊根據大家的直覺,以及前幾篇的內容

直接想到是轉換格式應該是沒有問題的

public class Sql
{
    [JsonProperty(PropertyName = "Name")]
    public string Name { get; set; }
}

這邊我的 class Sql 寫成這樣

[JsonProperty(PropertyName = "Name")]

其中這個 Attribute 是用來 mapping Property 用的

如果你變數宣告的名稱跟你的 Property 一樣

那這行 Attribute 可以不用加,建議還是都加啦

一些與 Neo4j.Driver 的差異

在資料查詢上看起來確實是方便許多

畢竟用 string 寫 Cypher 真的有點刺激

不過,話雖然是這麼說

但我查到現在還是沒找到可以回傳完整 NodeRelationship 資料的方法

其實也才查了 2 小時

目前看到的 LabelProperty 一定要分開來讀

這部份對於我來說有那麼點不方便

如果之後有查到方法再來補充吧 |>

另外,寫入資料官網的語法長成這樣

var newUser = new User { Id = 456, Name = "Jim" };
graphClient.Cypher
    .Create("(user:User {newUser})")
    .WithParam("newUser", newUser)
    .ExecuteWithoutResults();

可是我怎麼測都測不過,莫名其妙


漂亮,今天看起來是不用作弊了

原本 Neo4j.Driver 是預計要寫 4 篇的

可是發現篇幅好像不太夠,才硬塞了這篇進來

計畫果然充滿變化呢

不過按照計畫,最後還有 4 篇沒東西寫,有點危險ww

下篇 Neo4j 與 前端技術

究竟鐵人賽能不能完賽呢,讓我們繼續看下去


My Source Code

Github Link

參考資料

Neo4j - Using Neo4j from .NET

Neo4jClient wiki


排版好看的版本同步更新在我的 HackMD


上一篇
Neo4j with C# 程式串接實作 part3 - 回傳資料解析
下一篇
Neo4j 與 前端技術
系列文
圖形資料庫是什麼,可以吃嗎 - Neo4j30

尚未有邦友留言

立即登入留言