これは、C#ドライバーのバグであることの境界です。 IdMemberMapは、クラスマップが「フリーズ」されるまで定義されないことがわかります。これは、Idが実際に基本クラスで定義される可能性があるクラス階層に関係しているためです。これを回避する1つの方法は次のとおりです。
BsonClassMap.RegisterClassMap<Person>(cm => {
cm.AutoMap();
cm.Freeze();
cm.IdMemberMap.SetRepresentation(BsonType.ObjectId);
});
回避する別の方法は、IdMemberMapの代わりにGetMemberMapを使用することです:
BsonClassMap.RegisterClassMap<Person>(cm => {
cm.AutoMap();
cm.GetMemberMap(c => c.Id).SetRepresentation(BsonType.ObjectId);
});