RavenDB:如何转换会话.查询会话.高级文档查询
本文关键字:查询 会话 高级 文档 转换 何转换 RavenDB | 更新日期: 2023-09-27 18:28:01
我将以下类的对象存储在ravendb数据库中:
public class Continent
{
public string Name { get; set; }
public List<Country> Countries{ get; set; }
}
public class Countries
{
public string Name { get; set; }
public List<Province> Provinces{ get; set; }
}
public class Province
{
public string Name { get; set; }
public List<Province> Cities { get; set; }
}
public class City
{
public string Name { get; set; }
public string Address { get; set; }
}
感谢一篇帖子(RavenDB:如何检索嵌套集合中的顶部节点?)我学会了如何使用会话。查询以从数据库中检索名称和地址分别设置为"aloma"answers"123"的所有大陆。我想使用会话编写相同的查询。Advanced.DocumentQuery。所以你能告诉我如何将以下查询转换为会话吗。Advanced.DocumentQuery:var大陆=会话。Query()。Where(x=>x.国家。任意(国家=>国家。省份。任意(p=>p.Cities.Any(城市=>城市。名称="123"&&城市。地址="aloma"))。OfType().ToList()?
注意,这可能不是最好的方法,但这是我知道的唯一方法。此外,请注意,一旦执行以下操作,将创建一个索引。
var results = session.Advanced.DocumentQuery<Continent>().Where("Countries,Provinces,Cities,Name: 123 AND Countries,Provinces,Cities,Address: aloma").ToList();
使用的模型结构:
public class Continent
{
public string Id { get; set; }
public string Name { get; set; }
public List<Country> Countries { get; set; }
}
public class Country
{
public string Name { get; set; }
public List<Province> Provinces { get; set; }
}
public class Province
{
public string Name { get; set; }
public List<City> Cities { get; set; }
}
public class City
{
public string Name { get; set; }
public string Address { get; set; }
}