Bei einem einfachen Modell:AsQueryable Linq-Anweisung mit der Auswahl des ID-Feld
public class Model{
private string _id;
[BsonId(IdGenerator = typeof(StringObjectIdGenerator))]
[BsonRepresentation(BsonType.ObjectId)]
public string Id {
get { return _id; }
set { _id = value; }
}
//Additional fields
}
nehme ich nur ein paar Felder aus dieser Klasse eine Abfrage basierend off auswählen möchten:
_collection.AsQueryable<Model>().Where(m => m.Id == id)
.Select(x =>
new Model(){
Id = x.Id,
SomeField = x.SomeField
});
Der folgende Fehler wird auftreten: Element 'Id' stimmt mit keinem Feld oder Eigenschaft der Klasse Model überein.
Wenn keine SELECT-Klausel vorhanden ist, wird die ID festgelegt und wie erwartet zurückgegeben. Wenn Sie die Feld-ID aus der Auswahl entfernen, wird auch alles wie erwartet zurückgegeben, außer dass die ID null ist.
Wir möchten die Auswahl verwenden, um die Menge der zurückgegebenen Daten zu begrenzen. Wir könnten ein dynamisches Objekt verwenden (oder ein neues Objekt erstellen, um es weiterzugeben), aber es scheint überflüssig zu sein.
Haben Sie Vorschläge zu diesem Thema?
Es war nur ein Beispiel für das Problem, das ich fand –