RavdnDb автоиндекс - PullRequest
0 голосов
/ 29 мая 2018

У меня есть эти модели в RavdnDb версии 4.0:

public class AppUser
{
    public AppUser()
    {
        ActiveInApps = new Dictionary<string, ActiveApp>();
    }
    public string Id { get; set; }
    public string PhoneNumber { get; set; }
    public Dictionary<string, ActiveApp> ActiveInApps { get; set; }
}

public class ActiveApp
{
    public bool IsActive { get; set; } = true;
    public string FirstName { get; set; }
    public string LastName { get; set; }
    [JsonIgnore]
    public string DisplayName => $"{FirstName} {LastName}";
    public DateTimeOffset LastActivity { get; set; }
}

Как мне проиндексировать свойство PhoneNumber модели AppUser с FirstName, LastName, UserName модели ActiveApp?

Я пытался с этимкод, но не работает:

public AppUser_ByModel()
    {
        Map = users => from u in users
                       let p = u.ActiveInApps.Values.FirstOrDefault(aia => aia.IsActive == true)
                       select new Model
                       {
                           PhoneNumber = u.PhoneNumber,
                           Id = u.Id,
                           FirstName = p.FirstName,
                           LastName = p.LastName,
                           IsActive = p.IsActive
                       };
    }

И попытался с этим запросом:

    from AppUsers  as user
         where user.PhoneNumber > '92' 
              or user.ActiveInApps[].FirstName = 'test'
              or user.ActiveInApps[].LastName = 'test'
              or user.ActiveInApps[].UserName = 'test'
              or user.ActiveInApps[].SerialNumber = 'test'
              or user.ActiveInApps[].LastActivity = 'test'

и RavenDb создать автоматический индекс, который работает.

Как я могу увидеть сгенерированный код для автоматического индексации на RavenDb?

1 Ответ

0 голосов
/ 30 мая 2018

Больше нет кода для автоматических индексов.Попробуйте этот режим:

       let p = u.ActiveInApps.Select(x=>x.Value).FirstOrDefault(aia => aia.IsActive == true)
...