在查询 neo4j 客户端时排除 属性
Exclude property on query neo4j client
我正在制作一个类似于小型网络的应用程序。
我有这个 class :
class Person
{
public string Email {get; set;}
public string Password {get; set;}
public int Age {get; set;}
public long Birthday {get;set;}
... 30 properties more
}
我有这个问题:
_graphClient.Cypher.Match ("n:Person")
.Where<Person>(n => n.Email == info.Email)
.Return(n => n.As<Person>)
但我希望我的查询忽略密码和 return 所有其他属性。
确切地说,我希望它是:
{
Email: "email_1",
Age : 10,
Birthday : 1000
... 30 properties more
}
有人能帮帮我吗?
谢谢。
我可以想到三种选择,但我认为只有一种适合您。您可以将属性 [JsonIgnore]
附加到您的 Password
属性 - 但这将阻止它永远被序列化 - 我认为你不想要那样。
第二种选择是为您的 return 使用匿名类型,例如:
.Return(n => new {
Email = n.As<Person>().Email,
/* etc */
})
但我认为这将意味着您将编写大量代码,我想您宁愿避免这样做。
最后的选择是:
public class Person {
public string Email { get; set; }
/* All other properties, except Password */
}
public class PersonWithPassword : Person {
public string Password { get;set; }
}
然后在你所在的地方使用Person
,在你需要密码的地方使用PersonWithPassword
。
如果您将会员资格设置为按原样使用 Person
,您可能会发现自己遇到了问题 - 在这种情况下,您可以执行以下操作:
public class PersonWithoutPassword {
public string Email { get; set; }
/* All other properties, except Password */
}
public class Person : PersonWithoutPassword {
public string Password { get;set; }
}
在你的 return 中 - 你会 return:
Return(n => n.As<PersonWithoutPassword>())
相反。
我正在制作一个类似于小型网络的应用程序。 我有这个 class :
class Person
{
public string Email {get; set;}
public string Password {get; set;}
public int Age {get; set;}
public long Birthday {get;set;}
... 30 properties more
}
我有这个问题:
_graphClient.Cypher.Match ("n:Person")
.Where<Person>(n => n.Email == info.Email)
.Return(n => n.As<Person>)
但我希望我的查询忽略密码和 return 所有其他属性。
确切地说,我希望它是:
{
Email: "email_1",
Age : 10,
Birthday : 1000
... 30 properties more
}
有人能帮帮我吗?
谢谢。
我可以想到三种选择,但我认为只有一种适合您。您可以将属性 [JsonIgnore]
附加到您的 Password
属性 - 但这将阻止它永远被序列化 - 我认为你不想要那样。
第二种选择是为您的 return 使用匿名类型,例如:
.Return(n => new {
Email = n.As<Person>().Email,
/* etc */
})
但我认为这将意味着您将编写大量代码,我想您宁愿避免这样做。
最后的选择是:
public class Person {
public string Email { get; set; }
/* All other properties, except Password */
}
public class PersonWithPassword : Person {
public string Password { get;set; }
}
然后在你所在的地方使用Person
,在你需要密码的地方使用PersonWithPassword
。
如果您将会员资格设置为按原样使用 Person
,您可能会发现自己遇到了问题 - 在这种情况下,您可以执行以下操作:
public class PersonWithoutPassword {
public string Email { get; set; }
/* All other properties, except Password */
}
public class Person : PersonWithoutPassword {
public string Password { get;set; }
}
在你的 return 中 - 你会 return:
Return(n => n.As<PersonWithoutPassword>())
相反。