Ich beginne gerade mit DocumentDB/Cosmos und bin in einen Fehler geraten und ich bin nicht sicher, ob es mein Tun oder ein Fehler ist. Zur Vereinfachung des Tests verwende ich den DocumentDB-Emulator V1.13.58.2 und das C# DocumentDB SDK V1.14.0.DocumentDB Emulator stürzt auf Linq ab Abfrage
Alles funktioniert gut, bis ich versuche, eine Linq-Abfrage, wo ich einen Gleichheitstest auf eine andere Dokumenteigenschaft als ID. Es funktioniert, wenn ich id verwende, andernfalls stürzt der DocumentDB Server ab. Ich habe auch versucht, auf V1.13.4 des SDK herunterzurüsten und es wirft eine Ausnahme "Unerwartetes Zeichen beim Parsen von Wert: ≻. Pfad '', Zeile 0, Position 0".
Unten ist der Code, den ich verwende, um das Problem zu erstellen.
Zuerst habe ich eine einfache Klasse erstellt, die ich dann einige Instanzen der Datenbank hinzufügen. Ich kann sehen, dass die Dokumente erfolgreich mit den richtigen Partitionen im Dokument-Explorer erstellt wurden.
Dann versuche ich und Abfrage auf der DB mit linq wo "Übereinstimmung" ist ein Linq Ausdruck.
using (var query = m_Client.CreateDocumentQuery<TObject>(UriFactory.CreateDocumentCollectionUri(m_DBName, m_ColName),
new FeedOptions() { MaxItemCount = 1 }).Where(m => m.PartitionId == PartitionId && m.DocumentType == m_Type)
.Where(match).AsDocumentQuery())
{
var response = await query.ExecuteNextAsync<TObject>();
if (response.Count == 0) { return null; }
return response.ElementAt(0);
}
Wenn ich Spiel auf
match = m => m.Id == entity1.Id;
es funktioniert gut.
Allerdings, wenn ich gesetzt Match
match = m => m.NumberProperty == entity1.NumberProperty;
oder
match = m => m.StringProperty == entity1.StringProperty;
die DocumentDb Server abstürzt.
Jetzt funktioniert das alles gut auf meiner cloud-gehosteten Cosmos-Datenbank, so dass es kein großes Problem ist, aber ich war nur neugierig, ob es etwas war, was ich tat oder nur ein Fehler. Wenn jemand irgendeine Einsicht hat, würde ich es sehr schätzen. Vielen Dank.
Hum, ich habe es auf einem anderen Computer versucht und es hat auch gut für mich funktioniert. Also habe ich dann versucht, meinen ursprünglichen Code auszuführen und es hat auch auf diesem Computer funktioniert. Etwas muss mit meiner Umgebung auf meinem anderen Computer durcheinander gebracht werden. Danke für deine Zeit und Hilfe. – Pumices