在MongoDB中使用GuidRepresentation.Standard

Fla*_*ien 7 guid mongodb mongodb-.net-driver

我正在使用官方MongoDB驱动程序(C#)实现自定义IBsonSerializer.我处于必须序列化和反序列化Guid的情况.

如果我按如下方式实现Serialize方法,它可以工作:

public void Serialize(BsonWriter bsonWriter, Type nominalType, object value, IBsonSerializationOptions options)
{
    BsonBinaryData data = new BsonBinaryData(value, GuidRepresentation.CSharpLegacy);
    bsonWriter.WriteBinaryData(data);
}
Run Code Online (Sandbox Code Playgroud)

但是我不希望Guid表示为CSharpLegacy,我想使用标准表示.但是,如果我更改该代码中的Guid表示,我会收到以下错误:

MongoDB.Bson.BsonSerializationException:编写器的GuidRepresentation是CSharpLegacy,它要求subType参数为UuidLegacy,而不是UuidStandard.

如何使用标准表示序列化Guid值?

小智 15

老问题,但万一有人在谷歌上发现它像我做...

做一次:

BsonDefaults.GuidRepresentation = GuidRepresentation.Standard;
Run Code Online (Sandbox Code Playgroud)

例如,在Web应用程序/ Web API中,Global.asax.cs文件是添加一次的最佳位置

public class WebApiApplication : System.Web.HttpApplication
{
   protected void Application_Start()
   {
      BsonDefaults.GuidRepresentation = GuidRepresentation.Standard;

      //Other code...below

   }
}
Run Code Online (Sandbox Code Playgroud)