1

我对 Neo4J 和这个客户非常陌生,开始掌握事情的窍门,但遇到了一个奇怪的问题。我有一个像下面这样的实体

public class MemberAccount : Entity<MemberAccount>, IValidatable
{
  public string StudioName { get; set; }
  public string EmailAddress { get; set; }
  public string OwnerFirstName { get; set; }
  public string OwnerLastName { get; set; }
  public MemberAccountType AccountType { get; set; }
  public string Password { get; set; }
  public string PostCode { get; set; }

  [JsonProperty("PrimaryPhone")]
     public PhoneNumber PrimaryPhone { get; set; }
}

基本上,似乎 PhoneNumber 值对象导致创建语句失败并出现以下错误

System.ArgumentNullException :值不能为空。参数名称: uriString at System.Uri..ctor(String uriString) at Neo4jClient.GraphClient.GetLastPathSegment(String uri) in c:\TeamCity\buildAgent\work\f1c4cf3efbf1b05e\Neo4jClient\GraphClient.cs:Neo4jClient.GraphClient 的第 686 行。在 c:\TeamCity\buildAgent\work\f1c4cf3efbf1b05e\Neo4jClient\GraphClient.cs 中创建(TNode 节点,IEnumerable 1 relationships, IEnumerable1 indexEntries):StudioBooker.Persistence.Repository.Studio.Neo4JRepository.Neo4JMemberAccountRepository.Save(MemberAccount memberAccount) 中的第 334 行 Neo4JMemberAccountRepository。 cs:StudioBooker.Persistence.Tests.Neo4JRepositoryTests.Neo4JMemberAccountRepositoryTests.SaveTest() 中的第 29 行 Neo4JMemberAccountRepositoryTests.cs:第 31 行

newtonsoft 生成的 JSON 看起来像

{
    "StudioName": "Studio",
    "EmailAddress": "testmail0972307938024723@googlemail.com",
    "OwnerFirstName": "Test",
    "OwnerLastName": "Test",
    "AccountType": 1,
    "Password": "Password",
    "PostCode": "W3 6AE",
    "PrimaryPhone": {
        "AreaCode": "01491",
        "Number": "651321"
    },
    "Id": "00000000-0000-0000-0000-000000000000"
}

我正在努力理解为什么上面的堆栈跟踪会发生,因为我认为它只是一个简单的属性,就客户端而言,尽管它必须有更多。任何帮助,将不胜感激 :)

谢谢

4

1 回答 1

2

错误信息有点没用;我应该为此努力。

不过,一般来说,您不能使用这样的嵌套类型。Neo4j 仅存储键值,其中值是基元。您需要将您的电话号码展平到父节点上的属性,或者将其存储在不同的节点中。

于 2013-06-04T07:32:45.550 回答