![](/img/trans.png)
[英]Which data types should a client model use for offline sync with the Azure mobile apps SDK?
[英]Why is there a string ID in the data model of Azure Mobile Apps?
我正在Azure移動應用中使用C#嘗試學習它們。 我創建了模型以鏈接到我的Azure SQL DB,並創建了一個DataObject,如下所示:
public class Account : EntityData
{
//public int id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set; }
public string Password { get; set; }
public DateTime dtCreated { get; set; }
public Guid oGuid { get; set; }
}
注意,我在上面注釋掉了公共int id。 這給了我查詢重復的列錯誤。
最后,我使用新創建的Account DataObject創建了一個控制器。
因此,我運行了該應用程序並單擊了“表/帳戶”功能,它返回了零行(但是有數據,我可以向在Azure移動應用程序中使用的用戶查詢它)。
然后,我注意到模型模式是這樣的:
[
{
"id": 0,
"FirstName": "string",
"LastName": "string",
"PhoneNumber": "string",
"Password": "string",
"dtCreated": "2016-07-06T17:45:47.114Z",
"oGuid": "string",
"Id": "string",
"Version": "string",
"CreatedAt": "2016-07-06T17:45:47.114Z",
"UpdatedAt": "2016-07-06T17:45:47.114Z",
"Deleted": true
}
]
配置的模型有幾個問題(而且我不知道某些列的來源...)
首先,該ID被列出兩次,一次是int(必須是我的),另一次是字符串,我不知道它從何而來。
同樣,在數據庫中,oGuid的類型為uniqueIdentifier; 不是字符串。 這可能是問題,也可能不是問題,因為我還無法測試。
然后還有我的數據庫中不存在的其他列,包括CreatedAt(日期時間),UpdatedAt(日期時間),Version(字符串)和Deleted(位)。
我在想為什么沒有從該調用返回任何數據的問題/原因是數據不匹配。
我是否需要添加api測試中模型中列出的其他列?
我還測試過嘗試調用/ table / Account / 3來加載特定帳戶,並且它不返回任何行...我猜這是模型不匹配,但是我不確定這是問題還是其他原因它? 我沒有看到任何錯誤或警告。
更新資料
我了解了模型優先和Azure的情況,以及如何將Azure中的現有數據庫附加到新代碼。 我將其發布在這里,希望它可以節省其他人的時間。 這確實應該更容易做到。 我還不喜歡使用代碼優先(還),因為我想手動控制數據庫...因此這使我使用數據庫后端變得容易得多。
首先,我創建了一個新項目(Azure Mobile App),然后在模型下,我右鍵單擊該模型並添加->新實體數據模型,然后添加了azure db名稱,密碼,並為其指定了“用戶創建的配置文件名稱”,如下所示。 如下所示,必須在web.config中編輯此連接。
然后,我不得不在DataObjects中創建表的模型(沒有MS必需的列),並根據dataobject創建一個控制器。 然后,我不得不編輯web.config並設置一個非實體數據庫連接字符串:例如:
<add name="[user created preset name]" providerName="System.Data.SqlClient" connectionString="Server=[Azuredb server connection];initial catalog=[DBName];persist security info=True;user id=[user];password=[pass];MultipleActiveResultSets=True"/>
最后,在MobileServiceContext中,我必須將DataObject模型映射到Azure sql中的表,並設置要使用的連接字符串,從默認的MS_TableConnectionString到web.config中的連接字符串。
private const string connectionStringName = "Name=[user created preset name]";
在OnModelCreating()下,我添加了:
modelBuilder.Entity<Account>().ToTable("tblAccount");
其中Account是我在DataObjects中創建的模型(類),而tblAccount是AzureDB中的表名。
EntityData抽象類包含其他字段-移動脫機同步有五個字段
您的客戶端需要其客戶端模型中的所有這些字段,但“已刪除”(除非請求,否則不會傳輸,並且會通過Mobile Apps SDK自動處理以清除已刪除記錄的脫機同步)。
您還沒有說后端或前端使用什么語言。 但是,在兩種情況下都可以使用日志記錄-您只需將其打開,捕獲異常等即可。為您提供一些參考:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.