我正在使用最新的C# driver for MongoDB。我知道它现在是测试版,但我认为我正在做一些基本的事情。
我的问题是什么:我正在尝试将我的Id字段的代表设置为ObjectId
而非string
,如documentation中所述:
BsonClassMap.RegisterClassMap<Entity>(cm =>
{
cm.AutoMap();
cm.IdMemberMap.SetRepresentation(BsonType.ObjectId);
});
但我不能这样做,因为方法SetRepresentation()
不存在。我找不到类似的东西。
所以我想知道,这个方法被移除了吗? 除了属性之外还有其他方法来设置表示吗?我无法使用属性,因为我无法访问Entity类,我正在使用派生类。
提前致谢!
答案 0 :(得分:16)
我和司机的开发者谈过,他澄清了这种情况:
我们已将所有这些选项自带到序列化程序中,因此,在这种情况下,您需要设置序列化程序。 IdMemberMap.SetSerializer(new StringSerializer(BsonType.ObjectId)); //这是一个字符串,将在数据库中表示为ObjectId。
答案 1 :(得分:3)
这对我有用(v2.2)
cm.MapIdMember(c => c.Id)
.SetSerializer(new StringSerializer(BsonType.ObjectId))
.SetIdGenerator(StringObjectIdGenerator.Instance);
它表示数据库中的objectId(不是字符串)
"_id" : ObjectId("56715ebddb6986202816e566"),