Я вручную создаю 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 #.
Можно ли как-то переопределить значение по умолчанию для значения, которое я специально генерирую, как некоторый определенный тип?