如何将 EntityData 派生 class 默认字符串 Id 属性的主键更改为 int 属性?

How to change the primary key for a EntityData derived class default string Id property to an int property?

我最近开始了解 Azure 移动服务,我关注了 this tutorial 并且我的模型的 classes 需要从 EntityData class 继承。

EntityData source code 开始,一个 Id 属性已被定义为主键,但它被定义为字符串,它不适用于我使用 int 的模型。

我的 class 看起来像这样:

public partial class Role : EntityData
{
    public Role()
    {
        this.Users = new HashSet<User>();
    }
    [Key]
    public int RoleId { get; set; }
    public string Title { get; set; }

    public virtual ICollection<User> Users { get; set; }
}

如果我尝试使用此 class,我会收到一条错误消息,指出已定义 Id 属性。

有没有办法将不同的属性定义为主键?如果无法进行此更改,是否可以使用此字符串 Id 属性作为增量主键?

最好的解决办法是使用automapper。这是一篇博客 post,它概述了如何做到这一点,本质上是存储一个 int,但在通过网络发送时将其转换为字符串:

http://blogs.msdn.com/b/azuremobile/archive/2014/05/22/tables-with-integer-keys-and-the-net-backend.aspx