2017-10-16 32 views
0

我有一個將值寫入mongo的C#應用​​程序。有了它,我有一個約定包MongoDB序列化約定ignoreifnullconvention忽略假值

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

寫我的數據庫是:

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

我用這個忽略缺失值,避免我的POCO模型編寫的每一個領域。這些值之一,有效必須有它的真實和錯誤。但是,當我使用會議包編寫值時,它會忽略所有錯誤的活動
爲了測試它,我運行它沒有會議包,並寫入罰款罰款,但與會議包它沒有。有沒有辦法排除一個特定的字段或告訴會議包接受錯誤的值?
謝謝

回答

0

IgnoreIfDefaultConvention將忽略所有默認值。 改爲使用IgnoreIfNullConvention。

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

另一種選擇是將UserModel更改爲使用枚舉而不是布爾標誌。例如,枚舉UserStatus {未知,活動,無效}。在這種情況下,IgnoreIfDefault約定將忽略默認值「未知」,但其餘值將被捕獲。