Đã tìm thấy nó! Tôi đang gọi GetCollection () từ bên trong một phương thức chung khác, như thế này:
public T Save<T>(T item) where T : class, IRepoData, new()
{
GetCollection<T>().Save(item);
}
Điều này khiến GetCollection xem T là giao diện thay vì lớp cá thể thực tế. GetCollection hoạt động tốt ở bất kỳ nơi nào khác.
Đối với bất kỳ ai khác gặp sự cố này, tôi chỉ sử dụng một truy vấn cấp thấp như thế này để thay thế ... Collection.FindOneAs<T>(Query.EQ("Id", itemID.ToString()));