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

标签 asp.net-web-api entity-framework-6 azure-mobile-services

我最近开始了解Azure移动服务,我关注了this tutorial关于它,我的模型的类需要从 EntityData 类继承。

来自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; }
}

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

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

最佳答案

最好的解决方案是使用自动映射器。这是一篇博客文章,概述了如何执行此操作,本质上是存储一个 int,但在通过网络发送时将其转换为字符串:

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

关于asp.net-web-api - 如何将 EntityData 派生类默认字符串 Id 属性的主键更改为 int 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27809199/

相关文章:

c# - Entity Framework 如何填充需要连接的NotMapped属性?

c# - ASP.NET Web API - 没有 'MediaTypeFormatter' 可用于读取类型为 'Int32' 的对象

asp.net-mvc - 限制来自 WebApi Controller 和 ODATA w/Nhibernate 的服务器端结果

asp.net-mvc - 在 EF 6 中设置命令超时

c# - Azure移动服务: Serialization of Tables

authentication - 多个应用程序使用单个 Azure 移动服务进行实时身份验证?

node.js - Azure 移动服务和 socket.io

c# - 删除自托管 Web Api 响应中的服务器 header

c# - C# WebAPI 值得吗?我可以使用标准 MVC 4 来创建我的 API 吗?

c# - 无法使用 Entity Framework 6 获取存储过程结果