我正在使用带有Xamarin.Forms的Azure移动服务.NET后端,我遇到使用int身份ID列的问题。在离线方案中,我可以成功地将记录添加到数据库,但是作为标识的CustomerId列保持为0.一旦联机,当我同步时,该值由SQL服务器设置并填充在移动设备上。
由于ID是必需的,因为我还需要在另一个表中创建相关数据,问题是,如何在实体与服务器同步之前获取/设置ID?我无法手动设置它,因为它可能与另一个客户端冲突。我起诉现有的SQL数据库,所以不希望完全改变方案来改变ID以使用字符串或guid。
public class Customer
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int CustomerId { get; set; }
public string Name { get; set; }
....
}
public async Task SaveCustomer(Customer item) {
await CustomerTable.InsertAsync (item);
}
答案 0 :(得分:1)
您提到的方案正是Azure Mobile Apps使用字符串进行ID的原因。如果您使用字符串,则可以为ID生成GUID并在同步之前使用它。
获取数据库生成的Id的唯一方法是同步表。