[英]CosmosDB MongoDB-API omitting enums if value equals zero
當前,我們正在使用MongoDB API將項目從MongoDB遷移到CosmosDB。 在數據模型中,有時我們還會使用枚舉並將它們(使用默認的序列化器表示為int)存儲在數據庫中。
在極少數情況下遇到問題后,我們觀察到,當枚舉的值等於0時,該枚舉未存儲在CosmosDB中。(在這種情況下,MongoDB會存儲它們)
有沒有一種方法可以強制CosmosDB存儲這些條目? 重組方案將是一項重大工作,應避免。
例:
public enum EPower
{
mW = 0,
W = 1,
kW = 2
}
通過插入
var obj = new ContainingType();
// client is MongoClient
var db = client.GetDatabase(MyDB);
var collection = db.GetCollection<ContainingType>(MyCollection);
await collection.InsertOneAsync(obj);
將存儲在MongoDB中:
{
"SomeProp": "foo",
"Power": 0
}
在CosmosDB中:
{
"SomeProp": "foo"
}
我們還嘗試通過ConventionPacks強制枚舉的不同表示形式
ConventionRegistry.Register("EnumStrings",
new ConventionPack { new EnumRepresentationConvention(BsonType.String) },
t => true);
但是,如果枚舉的值為0,則仍會省略。(此外,這種存儲方式很糟糕)
沒有理由將其存儲為Enum
。 只需使用一個類代替:
public class EPower
{
public int mW = 0;
public int W = 1;
public int kW = 2;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.