Je souhaite interroger une entité qui contient des propriétés dynamiques avec RavenDb 4.0.0-beta-40018 mais je ne suis pas sûr de la façon de le faire.RavenDB (4.0-beta): Comment rechercher les attributs dynamiques de recherche plein texte
class Foo {
public int Id { get; set; }
public DateTime CreatedAt { get; set; }
public string Name { get; set; }
public dynamic Attributes { get; set; }
}
{
"Attributes": {
"IsFeatured": true
},
"CreatedAt": "2017-08-30T15:53:21.1881668Z",
"Name": "Featured Foo"
}
C'est la requête que j'ai essayé d'utiliser.
const string propertyName = "IsFeatured";
var results = session.Query<Foo>()
.Where(x => x.Attributes != null)
.Where(x => x.Attributes[propertyName] != null)
.Where(x => x.Attributes[propertyName] == true);
Malheureusement, je ne peux même pas compiler ce code comme je reçois une erreur de compilation (Error: An expression tree may not contain a dynamic operation
).
Je ne pense pas que ce soit une bonne approche pour chercher (avec ravendb) dans les attributs dynamiques. Y a-t-il de meilleures approches?
En fait, une bonne question. Je crois jusqu'à RavenDB 3.5 vous pouvez utiliser 'var results = DocumentSession.Advanced.LuceneQuery() .Where (" Attributes.IsFeatured: true ") .ToList();', mais depuis LuceneQuery est dépréciée en faveur de RQL Je n'ai aucune idée de comment cela se fait maintenant. –
FYI: Raven Query Language (RQL) n'est pas dans Raven 3.5. Ce sera à Raven 4.0. –