应用程序将 Guid 字段保留在 Mongo 中,最终存储为 BinData:
"_id" : new BinData(3, "WBAc3FDBDU+Zh/cBQFPc3Q==")
这种情况下的优点是紧凑,缺点在需要对应用程序进行故障排除时就会显现出来。 Guid 通过 URL 传递,当进入 Mongo 控制台时不断将它们转换为 BinData 有点痛苦。
除了增加大小之外,将 Guid 存储为字符串还有哪些缺点?优点之一是易于故障排除:
"_id" : "3c901cac-5b90-4a09-896c-00e4779a9199"
下面是 C# 中持久实体的原型:
class Thing
{
[BsonIgnore]
public Guid Id { get; set; }
[BsonId]
public string DontUseInAppMongoId
{
get { return Id.ToString(); }
set { Id = Guid.Parse(value); }
}
}
除了 gregor 的答案之外,使用 Guid 目前将阻止使用新的聚合框架,因为它表示为二进制类型。无论如何,您可以以更简单的方式做您想做的事情。这将使 mongodb bson 库为您处理转换。
public class MyClass
{
[BsonRepresentation(BsonType.String)]
public Guid Id { get; set;}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)