0

我目前正在使用後端的XamarinForms和Azure移動應用程序構建跨平臺的移動應用程序,並遇到InsertAsync函數的問題。每當我調用它,它成功地將數據插入到我的表中,但立即拋出一個InvalidOperation異常,並顯示消息「Error conversion data type nvarchar to numeric」。任何想法爲什麼它拋出這個異常/任何可能的修復?針對XamarinForms的Azure移動應用程序服務插入同步錯誤

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; } 

違規代碼:

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

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

我的表:

名字類型指數

我的客戶端模式(服務器端表匹配)

id字符串true

名稱串假

結束日期的假

描述字符串假

Payout1串假

版本版本虛假

createdAt日期假

updatedAt日期假

刪除布爾值false

+0

它看起來像一個類型不匹配。你確定你正確地匹配類型嗎?我的猜測是支出或ID不正確,不瞭解您的數據庫架構。 –

+0

添加了數據庫模式,有什麼想法? – Daniel

+0

1.我從來沒有見過「數字」類型,似乎無法找到任何文檔(在SQL中) - 所以我認爲你的意思是「數字」。 2.我希望標有「結束日期」的列包含日期(或日期時間)類型。 3.您的大小寫不一致,並且取決於您的服務器設置,它可能會導致問題。 4.支付是一個字符串? --------- 這就是說,你的錯誤是一種類型不匹配;某處某個字符串(或者我們認爲看起來像一個字符串的東西 - nvarchar)正在轉換爲一個數字,並導致問題。我會先看第4條。 –

回答

0

您不說模型是來自服務器還是來自客戶端。綜觀模式:

  1. 在客戶端,你不應該有一被刪列
  2. 的createdAt/updatedAt應該是「的DateTimeOffset?」類型(?是允許爲空的)
  3. 版本應爲字節[]類型
  4. ID應該是ID(大小寫。)
  5. 如果這是一個服務器端的模式,那麼你應該從EntityData繼承,而不是包括CreatedAt,UpdatedAt,ID,已刪除和版本字段。
+0

感謝您的想法,更新原件,說它是客戶端。這些修補程序沒有任何工作,任何其他想法?同樣,表中的實際插入正在工作,但恢復數據不起作用。 – Daniel

+0

你能更新你提供的代碼嗎?即使它是客戶端模式,#1-#4問題。 –

+0

此外,請添加服務器端DTO模型 –

相關問題