如何将 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,但在通过网络发送时将其转换为字符串:
我最近开始了解 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,但在通过网络发送时将其转换为字符串: