2017-10-16 6 views
0

私はmongoに値を書き込むC#アプリケーションを持っています。これで、私は大会パック私のデータベースへの書き込みMongoDBシリアル化規約ignoreifnullconventionはfalse値を無視します

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

を持っている:私は、欠損値を無視して、私のPOCOモデル内のすべての単一のフィールドを書いて避けるために、これを使用

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

。これらの値の1つであるアクティブは、真と偽の両方を持つ必要があります。しかし、私がコンベンションパックで値を書くとき、それはすべて偽であるアクティブを無視します。
これをテストするには、コンベンションパックを使わずに実行して値を書き込みますが、コンベンションパックではそれはしません。特定のフィールドを除外する方法や、偽の値を受け入れるようコンベンションパックに指示する方法はありますか?
ありがとうございます

答えて

0

IgnoreIfDefaultConventionはすべてのデフォルト値を無視します。 代わりにIgnoreIfNullConventionを使用してください。

もう1つのオプションは、ブール値フラグの代わりに列挙型を使用するようにUserModelを変更することです。たとえば、UserStatus列挙型{Unknown、Active、Inactive}などです。この場合、IgnoreIfDefault規則はデフォルト値「不明」を無視しますが、残りの値は取得されます。

関連する問題