2017-10-16 5 views
0

J'ai une application C# qui écrit des valeurs dans mongo. Avec elle, j'ai un paquet de conventionConventions de sérialisation de MongoDB ignoreifnullconvention ignore les valeurs fausses

var pack = new ConventionPack(); 
      pack.Add(new IgnoreIfDefaultConvention(true)); 
      ConventionRegistry.Register(
       "Ignore if default", 
       pack, 
       t => x); 

L'écriture dans ma base de données est la suivante:

var user = new UserModel{ 
    Name = "Willy", 
    Active = false 
} 
mongoContext.User.InsertOne(user); 

J'utilise ceci pour ignorer les valeurs manquantes et évitez d'écrire chaque champ unique dans mon modèle POCO. L'une de ces valeurs, Active doit avoir à la fois vrai et faux. Mais quand j'écris les valeurs avec le paquet conventionnel, il ignore tous les actifs qui sont faux.
Pour le tester, je l'ai exécuté sans le pack de convention et écrit les valeurs correctement, mais avec le pack de convention, ce n'est pas le cas. Existe-t-il un moyen d'exclure un champ particulier ou de dire au pack conventionnel d'accepter de fausses valeurs?
Merci

Répondre

0

IgnoreIfDefaultConvention va ignorer toutes les valeurs par défaut. Utilisez plutôt IgnoreIfNullConvention. Une autre option serait de changer le UserModel pour utiliser un enum à la place de l'indicateur booléen. Par exemple, enum UserStatus {Inconnu, Actif, Inactif}. Dans ce cas, la convention IgnoreIfDefault ignorera la valeur par défaut "Inconnu" mais le reste des valeurs sera capturé.