2017-10-27 15 views
0

私はMVC Project 4.0にneo4jとneo4jClientをインストールしました。 Neo4jClient - クエリで値が返されませんでした

public class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.MapHttpAttributeRoutes(); 

     config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 
     config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore; 

     var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml"); 
     config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType); 

     //Use an IoC container and register as a Singleton 
     var url = ConfigurationManager.AppSettings["ClientDBUrl"]; 
     var user = ConfigurationManager.AppSettings["ClientDBUser"]; 
     var password = ConfigurationManager.AppSettings["ClientDBPassword"]; 
     var client = new GraphClient(new Uri(url), user, password); 
     client.Connect(); 

     GraphClient = client; 
    } 

    public static IGraphClient GraphClient { get; private set; } 
} 

フォルダ

App_Startで

<appSettings> 
<add key="ClientDBUrl" value="http://localhost:7474/db/data" /> 
<add key="ClientDBUser" value="neo4j" /> 
<add key="ClientDBPassword" value="password" /> 
</appSettings> 

メイドWbApiConfig.cs作成:

ガイド

:play movies 

から例の映画データベースをインストールし、私はのWeb.Configで、以下の設定を行ってモデル

public class Person 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public int Age { get; set; } 
} 

は、それから私は、ビュー

public ActionResult Index() 
    { 

     var query = WebApiConfig.GraphClient.Cypher.Match("(p:Person)-[:ACTED_IN]->(m:Movie {title: 'Top Gun'})") 
      .Return(p => p.As<Person>()).Results; 

     return View(query.ToList()); 
    } 

とビューの

@model IEnumerable<Neo4j_TestProject1.Models.Person> 
<table> 
    @foreach (var item in Model) { 
<tr> 
    <td> 
     @item.Name 
    </td> 
</tr> 
} 
</table> 

にデータを強要するために、コントローラでの単純なクエリを書くしかし、私は、「インスタンスに設定されていないオブジェクト参照」のエラーが出ます私の質問で。

答えて

0

私はエラーを再現できませんが、! - あなたのためにどこが間違っているのか分かっていると思います。

MoviesデータセットはPersonラベルを持っているが、あなたがそれを見れば、あなただけの2プロパティbornnameがある表示されます。したがって、AgeIdのプロパティは表示されません。表示されていないときは無視してください。のプロパティは、Neo4jで大文字と小文字が区別されるため、Nameのプロパティは設定されません。

あなたがあなたのPersonクラスを変更した場合:

public class Person 
{ 
    public int Id { get; set; } 

    [JsonProperty("name")] // <-- Added 
    public string Name { get; set; } 
    public int Age { get; set; } 
} 

名前を取得します、あなたは基本的にあなたのために翻訳しNeo4jClientを言っています。

あなたはこのようになり、あなたのPersonクラスを変更できます。あなたはそれをしたい場合は、あなたの年齢になるだろう

public class Person 
{ 
    private int _born; 
    public int Id { get; set; } 

    [JsonProperty("name")] 
    public string Name { get; set; } 

    [JsonProperty("born")] 
    public int Born 
    { 
     get => _born; 
     set 
     { 
      _born = value; 
      Age = DateTime.Now.Date.Year - value; 
     } 
    } 

    public int Age { get; set; } 
} 

関連する問題