Ich versuche, eine Eigenschaft für jedes Objekt innerhalb eines Arrays von Objekten mit dem Wert einer Eigenschaft für ein anderes Objekt (MyObject) zu aktualisieren. Ich bin unklar, wenn Sie anrufen:Kann Find() mehrfach auf einer MongoCollection aufgerufen werden?
my_objects_collection = m_database.GetCollection (MY_OBJECTS_COLLECTION_NAME);
keine Auswirkungen auf der Leistung hat, also versuchte ich es nur einmal und Ausführung einen neuen Befehls Suchen dagegen (mit einem modifizierten Filter für jede Iteration) innerhalb einer For ... Loop, siehe unten Aufruf:
MyObject my_object = null;
IMongoCollection<MyObject> my_objects_collection = null;
if (objects != null)
{
my_objects_collection = m_database.GetCollection<MyObject>(MY_OBJECTS_COLLECTION_NAME);
for (int i = 0; i < objects.Count; i++)
{
Expression<Func<MyObject, bool>> filter = x => (x.ID == objects[i].ID) && (x.LanguageCode == language_code);
my_object = await my_objects_collection.Find(filter).FirstOrDefaultAsync();
if (my_object != null)
{ objects[i].DisplayName = my_object.Name; }
}
}
Der obige Code löst jedoch die folgende Ausnahme aus:
Wert kann nicht null sein. Parametername: Sammlung
bei MongoDB.Driver.Core.Misc.Ensure.IsNotNull [T] (T-Wert, String paramName) bei MongoDB.Driver.IMongoCollectionExtensions.Find [TDocument] (IMongoCollection 1 collection, Expression
1-Filter, FindOptions Optionen)
Wenn ich die my_objects_collection Zuordnung innerhalb der for-Schleife zu bewegen, so dass es für jede Iteration genannt wird, funktioniert der Code ohne Ausnahmen zu werfen.
Daher ist meine Frage, Was passiert mit der MongoCollection-Referenz (my_objects_collection), nachdem die Suche (oder eine andere Operation) dagegen ausgeführt wird?
Ich würde wirklich zu schätzen, wenn jemand einen Einblick in diesen bieten könnte. Ich könnte weitermachen, da meine Anwendung funktioniert, aber ich möchte wirklich wissen, warum es eine Ausnahme gibt, die anzeigt, dass die Sammlung für mein eigenes Verständnis null ist.
Danke im Voraus,
Andrew