Ich arbeite an einem Code, der Ereignis generieren, in eine DynamoDB-Tabelle, sortiert nach EventID. Um eine eindeutige Ereignis-ID für jedes Ereignis zu generieren, erzeuge ich eine Zufallszahl und frage dann in die Datenbank, falls sie bereits existiert. Wenn es wiederholt, bis es nicht tut.DynamoDB Query Xamarin.Forms
Ich habe ein Problem in meine DB abzufragen, mein Code scheint nicht zu funktionieren. Ich habe Probleme zu verstehen, wie Sie die Anfrage erstellen, zum Beispiel, wofür das Feld "IndexName" verwendet wird, wenn ich in "KeyConditionExpression" bereits sage, wonach gesucht werden soll.
Hier ist mein Code von der doc von aws inspiriert:
private int getEventID() {
bool isValid = false;
int ranEventID = 0;
while(!isValid) {
isValid = true;
Random random = new Random();
ranEventID = random.Next (0, 5);
QueryEventID (ranEventID);
foreach (int i in _lstEventID) {
if (ranEventID == i)
isValid = false;
}
}
return ranEventID;
}
private async void QueryEventID(int ranEventID) {
_lstEventID = new ObservableCollection<int>();
using(App.client) {
var queryResponse = await App.client.QueryAsync(new QueryRequest() {
TableName = "Events",
IndexName = "EventID",
KeyConditionExpression = "EventID = :v_Id",
ExpressionAttributeValues = new Dictionary < string, AttributeValue > {
{
":v_Id", new AttributeValue {
N = ranEventID.ToString()
}
}
}
});
queryResponse.Items.FirstOrDefault((i) => { //This is a workaround for foreach loop with Linq. Could not do .ToList().ForEach
_lstEventID.Add(Int32.Parse(i["EventID"].N));
return false;
});
}
}
Wenn Sie irgendwelche Ideen haben, wie man nicht in die DB jedes Mal sehe ich es gerne betrachten werde. Beachten Sie, dass _lstEvent könnte nur ein Int sein, aber aus Gründen brauche ich es ObservableCollection
Statt einer „Zufallszahl“, haben Sie darüber nachgedacht, einen 'GUID' mit (' System.Guid.NewGuid'), wie es wird „einzigartig“ sein und Sie müssen nicht zu Durchsuchen Sie die Datenbank vor dem Einfügen. – SushiHangover
Noch nie davon gehört. Kann ich nach Google sicher sein, dass es nie wieder dasselbe sein wird? Wenn ja, werde ich es definitiv verwenden. Aber haben Sie eine Idee, warum die Abfrage nicht funktioniert? –
Microsoft (und der Rest der Tech-Welt) verwendet seit langer Zeit GUID/UUID/etc. Sie können darauf vertrauen, dass sie einzigartig sind ;-) – SushiHangover