Guid BsonValue не учитывает переданное представление, только значение по умолчанию - PullRequest
0 голосов
/ 07 марта 2019

Я вручную создаю BsonDocument для хранения в базе данных Монго. Некоторые поля - это Guids, которые я хочу сохранить в стандартном формате 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: тогда все, что я передаю, работает ... так что кажется, что "значения по умолчанию" переопределяют "конкретные"? И если да, то почему по умолчанию будет тип "Legacy", а не тип "Standard" (значение по умолчанию, похоже, GuidRepresentation.CSharpLegacy для драйвера c #)?

Как уже говорилось, это для библиотеки, поэтому мне не следует изменять значения по умолчанию, но я все же хочу, чтобы записи, сгенерированные этой библиотекой, были сохранены в стандартном формате, а не в специфичном для c #.

Можно ли как-то переопределить значение по умолчанию для значения, которое я специально генерирую, как некоторый определенный тип?

...