Guid BsonValue不考虑传入的表示形式,仅考虑默认值

时间:2019-03-07 12:17:23

标签: c# mongodb mongodb-.net-driver

我正在手动创建一个BsonDocument来存储在mongo数据库中。我想使用标准UUID格式存储一些字段。

如果我更改全局默认值,请使用:

BsonDefaults.GuidRepresentation = GuidRepresentation.Standard;

一切正常,并且BsonDocument中的值存储为UUID('<guid>'),但是我似乎找不到不更改默认值的方法(这是针对库的,所以我不想修改任何默认设置)...我尝试将BsonValue创建为:

new BsonBinaryData(GuidConverter.ToBytes(guid, GuidRepresentation.Standard),
                   BsonBinarySubType.UuidStandard)

或:

new BsonBinaryData(guid, GuidRepresentation.Standard);

或者我能想到的任何组合,如果我不更改CSUUID('<guid>'),它仍会创建为BsonDefaults

有什么我想念的东西吗,这是一个错误还是在某个地方有记录?


我刚刚检查了一下,如果将BsonDefaults.GuidRepresentation设置为GuidRepresentation.Unspecified,它实际上可以工作:那么无论我传入什么,都可以工作……所以看起来“默认值”优先于“特定”值吗?如果是这样,为什么默认值为“传统”类型而不是“标准”类型(对于c#驱动程序,默认值似乎为GuidRepresentation.CSharpLegacy)?

如上所述,这是用于库的,因此我不应该更改默认值,但我仍然希望使用该库生成的记录以标准格式存储,而不是以c#特定的格式存储。

有什么方法可以覆盖默认值吗?

0 个答案:

没有答案