簡単に言えば、それはすべて慣習についてです。 MongoDB .NETドライバーは、静的クラスConventionRegistry
を公開します これにより、独自の規則を登録できます(more ここ
)。さらに、2つの「組み込み」規則があります__defaults__
および__attributes__
。深く掘り下げる(ドライバー
つまり、id
メンバーは通常のBSON_id要素と見なされます。
それを修正する方法は?
デフォルトの規則を取り除くことができます
ConventionRegistry.Remove("__defaults__");
ただし、自動的に他のすべてのドライバー規則を削除するため、かなり危険です。または、常に空になる偽のプロパティを作成することもできます:
public class SubServiceDef
{
[BsonElement("id")]
public int Id { get; set; }
[BsonId]
public ObjectId FakeId { get; set; }
}
または、BsonNoId
を使用することもできます
[BsonNoId]
public class SubServiceDef
{
[BsonElement("id")]
public int Id { get; set; }
}
したがって、規則ではid
を設定します クラスマップのIdMemberとしてですが、後処理中にこの属性はIdMemberを強制的にnullにし、クラスは正常に逆シリアル化されます