J'ai une classe que je veux utiliser une clé de document RavenDB:Comment utiliser un type de référence comme une clé dans un document RavenDB
public class DocumentKey
{
public string Namespace { get; set; }
public string Id { get; set; }
}
J'ai aussi mis à exécution les ITypeConverter
(pas .NET one, l'interface spécifique à RavenDB) pour convertir le type de référence en une chaîne (car dans la base de données, the keys are all really just strings).
Enfin, j'ai ajouté la mise en œuvre de ITypeConverter
à la mise en œuvre IDocumentStore
par la List<ITypeConverter>
exposée à travers la propriété Conventions.IdentityProviders
.
Cependant, la signature sur les LoadAsync<T>
surcharges sur la mise en œuvre IAsyncDocumentSession
ressembler à ceci (enlevé les signatures qui prennent plusieurs ids par souci de concision Aussi, le même que Load
sur l'interface IDocumentSession
.):
LoadAsync<T>(string id);
LoadAsync<T>(ValueType id);
I ne veut vraiment pas utiliser les types de valeurs pour mes clés pour les raisons suivantes:
- J'ai une abstraction qui n'a pas de contrainte sur le type de la clé. Créer des structures séparées pour refléter cela juste pour avoir des types de valeur sont très inconvénient.
- Je n'ai pas un contrôle complet sur le type en étant limité à un type de valeur. Le type de valeur a un constructeur par défaut qui par défaut les valeurs d'une manière que je ne veux pas avoir à traiter partout ailleurs dans mon code.
Comment utiliser un type de référence comme clé de document dans RavenDB?