缺少C#MongoDB.Driver 2.0.0-beta1中的SetRepresentation()方法

时间:2015-02-02 21:08:43

标签: c# mongodb

我正在使用最新的C# driver for MongoDB。我知道它现在是测试版,但我认为我正在做一些基本的事情。

我的问题是什么:我正在尝试将我的Id字段的代表设置为ObjectId而非string,如documentation中所述:

BsonClassMap.RegisterClassMap<Entity>(cm =>
{
    cm.AutoMap();
    cm.IdMemberMap.SetRepresentation(BsonType.ObjectId);
});

但我不能这样做,因为方法SetRepresentation()不存在。我找不到类似的东西。

所以我想知道,这个方法被移除了吗? 除了属性之外还有其他方法来设置表示吗?我无法使用属性,因为我无法访问Entity类,我正在使用派生类。

提前致谢!

2 个答案:

答案 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"),