无法使用值对象创建实体

时间:2013-06-04 07:13:38

标签: neo4j neo4jclient

我是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值对象导致create语句失败并出现以下错误

  

System.ArgumentNullException:值不能为null。参数名称:   在System.Uri..ctor(String uriString)处的uriString   Neo4jClient.GraphClient.GetLastPathSegment(String uri)in   C:\ TeamCity的\ buildAgent \工作\ f1c4cf3efbf1b05e \ Neo4jClient \ GraphClient.cs:   在Neo4jClient.GraphClient.Create(TNode节点,   IEnumerable 1 relationships, IEnumerable 1 indexEntries)in   C:\ TeamCity的\ buildAgent \工作\ f1c4cf3efbf1b05e \ Neo4jClient \ GraphClient.cs:   334号线   StudioBooker.Persistence.Repository.Studio.Neo4JRepositories.Neo4JMemberAccountRepository.Save(MemberAccount   memberAccount)在Neo4JMemberAccountRepository.cs中:第29行   StudioBooker.Persistence.Tests.Neo4JRepositoryTests.Neo4JMemberAccountRepositoryTests.SaveTest()   在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"
}

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

由于

1 个答案:

答案 0 :(得分:2)

错误信息有点无用;我应该努力。

但一般来说,你不能使用那样的嵌套类型。 Neo4j仅存储键值,其中值是基元。您需要将电话号码展平为父级的属性,或将其存储在其他节点中。