Tôi đã phải đối mặt với cùng một vấn đề. Sau khi gỡ lỗi bằng mã MongoDB, tôi thấy rằng một bộ nối tiếp khác được áp dụng khi sử dụng giao diện thay vì loại cụ thể. Trong trường hợp này, DiscriminationInterfaceSerializer được sử dụng làm bộ tuần tự cho giao diện, trong khi BsonClassMapSerializer được sử dụng cho loại cụ thể.
Với bộ tuần tự này cho giao diện, sơ đồ lớp của lớp triển khai không được liên kết với giao diện. Do đó, không biết rằng Id là trường id bson và nên được ánh xạ tới khóa '_id'. Đó là lý do tại sao ngoại lệ được nêu ra.
Giải pháp phù hợp với tôi là sử dụng ImpliedImplementationInterfaceSerializer :
[BsonSerializer(typeof(ImpliedImplementationInterfaceSerializer<IEntity, Entity>))]
public interface IEntity
{
// snip...
}
Thuộc tính này đăng ký bộ tuần tự hóa và xác định sử dụng bản đồ lớp bson của Thực thể cho IEntity để thuộc tính Id sẽ được ánh xạ đúng cách. Tôi đã tìm thấy giải pháp này nhờ @Robert Baker trong câu trả lời của anh ấy tại đây:Deserialize đối tượng làm giao diện với MongoDB C # Driver