相关疑难解决方法(0)

在MongoDB中将Guid存储为String有什么缺点?

应用程序在Mongo中保留Guid字段,最终存储为BinData:

"_id" : new BinData(3, "WBAc3FDBDU+Zh/cBQFPc3Q==")
Run Code Online (Sandbox Code Playgroud)

在这种情况下的优点是紧凑性,当需要对应用程序进行故障排除时会出现缺点.Guids通过URL传递,并且在转到Mongo控制台时不断将它们转换为BinData有点痛苦.

除了增加尺寸外,将Guid存储为字符串有什么缺点?一个优点是易于故障排除:

"_id" : "3c901cac-5b90-4a09-896c-00e4779a9199"
Run Code Online (Sandbox Code Playgroud)

这是C#中持久化实体的原型:

class Thing
{
    [BsonIgnore]
    public Guid Id { get; set; }

    [BsonId]
    public string DontUseInAppMongoId
    {
        get { return Id.ToString(); }
        set { Id = Guid.Parse(value); }
    }
}
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-.net-driver

11
推荐指数
2
解决办法
6561
查看次数

如何告诉MongoDB C#驱动程序以字符串格式存储所有Guid?

我目前正在将该[BsonRepresentation(BsonType.String)]属性应用于Guid我的域模型中的所有属性,以便以字符串格式序列化这些属性.除了令人厌倦之外,有时候这种情况并不常见,例如使用自定义Wrapper<T>类:

public class Wrapper<T>
{
    public T Value { get; set; }

    // Further properties / business logic ...
}
Run Code Online (Sandbox Code Playgroud)

TGuid时,Value属性将被存储为类型的二进制数据UuidLegacy(如将类型的任何属性Guid,这不是装饰与上述属性).但是,我希望所有Guids,包括Wrapper<Guid>.Value在数据库中表示为字符串.

有没有办法告诉MongoDB C#驱动程序以Guid字符串格式存储所有s?

serialization mongodb mongodb-.net-driver

4
推荐指数
2
解决办法
5185
查看次数