0

Ich erstelle derzeit eine plattformübergreifende mobile App mit XamarinForms und einer Azure Mobile App im Back-End, und ich stoße auf ein Problem mit der InsertAsync-Funktion. Wenn ich es anrufe, fügt es die Daten erfolgreich in meine Tabelle ein, löst aber sofort eine InvalidOperation-Ausnahme mit der Meldung "Fehler beim Konvertieren des Datentyps nvarchar in numerisch" aus. Irgendeine Idee, warum es diese Ausnahme wirft/irgendwelche möglichen Korrekturen?Azure Mobile App-Dienst InsertAsync-Fehler für XamarinForms

Modell Meine Client-Seite (entspricht der Serverseite Tabelle):

public class Bet 
{ 
    [PrimaryKey] 
    [JsonProperty(PropertyName = "Id")] 
    public string Id { get; set; } 

    [JsonProperty(PropertyName = "Name")] 
    public string Name { get; set; } 

    [JsonProperty(PropertyName = "endDate")] 
    public int endDate { get; set; } 

    [JsonProperty(PropertyName = "Description")] 
    public string Description { get; set; } 

    [JsonProperty(PropertyName = "Payout1")] 
    public string Payout1 { get; set; } 

    [Version] 
    [JsonProperty(PropertyName ="version")] 
    public byte[] version { get; set; } 

    [JsonProperty(PropertyName = "createdAt")] 
    public DateTime? createdAt { get; set; } 

    [JsonProperty(PropertyName = "updatedAt")] 
    public DateTime? updatedAt { get; set; } 

der säumige Code:

public async void addBet(Bet myBet, List<UserBet> myUserBets) 
    { 
     IMobileServiceTable<Bet> betTable = client.GetTable<Bet>(); 

     myBet.ID = null; 
     await betTable.InsertAsync(myBet); 
    } 

Meine Tabelle:

Name Typ IS Index

ID Zeichenfolge wahr

Name String falsch

endDate Anzahl falsch

Beschreibung String falsch

Payout1 String falsch

Version Version falsch

createdAt Datum falsch

updatedAt Datum falsch

gelöscht Boolean false

+0

Es sieht aus wie eine Typenkonflikt. Sind Sie sicher, dass Sie die richtigen Typen gefunden haben? Meine Vermutungen sind Auszahlung oder ID, die falsch sind und keine Ahnung von Ihrem DB-Schema haben. –

+0

Hinzugefügt das DB-Schema, irgendwelche Ideen? – Daniel

+0

1.Ich habe nie den "Number" -Typ gesehen und finde keine Dokumentation (in SQL) - also denke ich, dass du "Numeric" meinst. 2. Ich hätte erwartet, dass eine Spalte mit dem Namen "End Date" einen Date (oder DateTime) -Typ enthält. 3. Ihre Groß-/Kleinschreibung ist inkonsistent und kann je nach Servereinstellungen zu Problemen führen. 4. Auszahlung ist eine Zeichenfolge? --------- Das heißt, Ihr Fehler ist ein Typ nicht übereinstimmen; Irgendwo wird eine Zeichenkette (oder etwas, von dem wir denken, dass es wie eine Zeichenkette aussieht - nvarchar) in eine Zahl umgewandelt und es verursacht Probleme. Ich würde zuerst auf # 4 schauen. –

Antwort

0

Sie nicht sagen, ob das Modell vom Server oder Client ist. Mit Blick auf das Modell:

  1. Auf dem Client, sollten Sie nicht haben eine gelöschte Spalte
  2. Die createdAt/updatedAt sollte „Datetime?“ Typ (? NULL-Werte zugelassen ermöglichen)
  3. Die Version byte [] Typ
  4. ID sollte Id (Kapitalisierung Angelegenheiten)
  5. Wenn dies ein serverseitiges Modell, dann sollten Sie von EntityData erben eher sein sollte als einschließlich der Felder CreatedAt, UpdatedAt, ID, Deleted und Version.
+0

Danke für die Ideen, aktualisiert Original zu sagen, dass es Client-Seite ist. Keine dieser Fixes funktionierte, andere Ideen? Auch hier funktioniert die tatsächliche Einfügung in die Tabelle, aber die Wiederherstellung der Daten funktioniert nicht. – Daniel

+0

Können Sie den von Ihnen bereitgestellten Code mit den von Ihnen vorgenommenen Änderungen aktualisieren? Da es sich um einen Client-seitigen Modus handelt, ist # 1- # 4 von Bedeutung. –

+0

Fügen Sie auch das serverseitige DTO-Modell hinzu –