脱机时未分配Azure移动服务标识列

本文关键字:服务 标识 移动 Azure 分配 脱机 | 更新日期: 2023-09-27 18:30:10

我正在使用带有Xamarin.Forms的Azure Mobile Services.NET后端,并且我在使用int标识ID列时遇到问题。在离线场景中,我可以成功地将记录添加到DB中,但作为标识的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);
    }

脱机时未分配Azure移动服务标识列

您提到的场景正是Azure Mobile Apps使用字符串作为ID的原因。如果使用字符串,则可以为ID生成GUID,并在同步之前使用该GUID。

获取数据库生成的Id的唯一方法是同步表。