【问题标题】:RavenDB: how to transform a session.Query into a session.Advanced.DocumentQuery?RavenDB:如何将 session.Query 转换为 session.Advanced.DocumentQuery?
【发布时间】:2015-12-23 14:03: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:如何检索嵌套集合中的顶级节点?)我已经学会了如何使用 session.Query 从数据库中检索名称和地址分别设置为“aloma”的城市的所有大陆”和“123”。我想使用 session.Advanced.DocumentQuery 编写相同的查询。那么您能告诉我如何将以下查询转换为 session.Advanced.DocumentQuery: varcontines = session.Query() .Where(x=>x.Countries.Any(country => country.Provinces.Any(p =>p.Cities.Any(city => city.Name == "123" && city.Address == "aloma"))).OfType().ToList(); ?

【问题讨论】:

    标签: c# nested ravendb documents


    【解决方案1】:

    注意,这可能不是最好的方法,但这是我知道的唯一方法。另外,请注意以下内容将在执行后创建一个索引。

    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; }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      相关资源
      最近更新 更多