Redis OM .NET не индексирует свойство встроенной модели как сортируемое
Я пытаюсь реализовать простую сортировку в своем проекте, где память приложения хранится в стеке Redis. Пока что большинство функций работают без особых сложностей. Тем не менее, я нашел один, который может в конечном итоге нарушить некоторую логику: когда свойство помечено как сортируемое в основном объекте, OrderBy работает без сучка и задоринки. Однако, когда я пытаюсь выполнить сортировку по свойству встроенного объекта, Redis OM выдает следующее исключение:
Property `Field1` not loaded nor in schema
Failed on FT.SEARCH yes-idx * LIMIT 0 100 SORTBY Field1 ASC
Код выглядит следующим образом:
var _provider = new RedisConnectionProvider("redis://localhost:6379");
_provider.Connection.DropIndexAndAssociatedRecords(typeof(Yes));
await _provider.Connection.CreateIndexAsync(typeof(Yes));
var coll = _provider.RedisCollection<Yes>();
for (int i = 1; i < 11; i++)
{
var no = new No() { Field1 = i, Field2 = i * 100};
var yes = new Yes() { Id = i, NoField = no, Timestamp = DateTime.Now };
await coll.InsertAsync(yes);
}
var timey = coll.OrderBy(x => x.Timestamp).ToList();
var earlier = timey.FirstOrDefault();
var later = timey.LastOrDefault();
Console.WriteLine($"{earlier.Id} came earlier");
Console.WriteLine($"{later.Id} came later");
var timey2 = coll.OrderBy(x => x.NoField.Field1).ToList(); //throws here
var earlier2 = timey.FirstOrDefault();
var later2 = timey.LastOrDefault();
Console.WriteLine($"{earlier2.Id} came earlier");
Console.WriteLine($"{later2.Id} came later");
[Document(StorageType = StorageType.Json)]
public class Yes
{
[Indexed, RedisIdField] public int Id { get; set; }
[Indexed(CascadeDepth = 2)] public No NoField { get; set; }
[Indexed(Sortable = true)] public DateTime Timestamp { get; set; }
}
public class No
{
[Indexed(Sortable = true)] public int Field1 { get; set; }
[Indexed] public int Field2 { get; set; }
}
Любая идея, почему он может не индексировать сортируемое свойство встраивания? В документации не так много информации о встроенных моделях, в большинстве случаев речь идет о плоских моделях. Я вполне могу делать что-то не так, но, поскольку Redis Stack относительно новый, это может быть настоящей ошибкой, насколько мне известно.