Asp.net web api 如何将EntityData派生类默认字符串Id属性的主键更改为int属性?

Asp.net web api 如何将EntityData派生类默认字符串Id属性的主键更改为int属性?,asp.net-web-api,entity-framework-6,azure-mobile-services,Asp.net Web Api,Entity Framework 6,Azure Mobile Services,我最近开始学习Azure移动服务,我关注它,我的模型的类需要从EntityData类继承 从中,已经定义了一个Id属性作为主键,但它被定义为string,这对于使用int的模型不起作用 我的班级是这样的: public partial class Role : EntityData { public Role() { this.Users = new HashSet<User>(); } [Key] public int Rol

我最近开始学习Azure移动服务,我关注它,我的模型的类需要从EntityData类继承

从中,已经定义了一个Id属性作为主键,但它被定义为string,这对于使用int的模型不起作用

我的班级是这样的:

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; }
}
公共部分类角色:EntityData
{
公共角色()
{
this.Users=new HashSet();
}
[关键]
public int RoleId{get;set;}
公共字符串标题{get;set;}
公共虚拟ICollection用户{get;set;}
}
如果我尝试使用这个类,我会收到一条错误消息,说已经定义了一个Id属性


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

最好的解决方案是使用automapper。下面是一篇博客文章,概述了如何执行此操作,本质上是存储一个int,但在通过导线发送时将其转换为字符串:


哇,这比我想象的要简单得多,但我如何将其设置为自动递增?主要是因为当我尝试不发送它时,会收到一条错误消息,说明需要Id属性。一个简单的问题,您共享的页面中的示例处理的是一个具有主键的实体,但如果我处理的是一个同时具有primery键和foregin键的实体,我是否必须在WebApiConfig类中使用它们的DTO字符串等效项映射它们中的每一个?理想情况下,是的。或者,可以使用Automapper展平关系。