如何将 EntityData 派生类默认字符串 Id 属性的主键更改为 int 属性?
Posted
技术标签:
【中文标题】如何将 EntityData 派生类默认字符串 Id 属性的主键更改为 int 属性?【英文标题】:How to change the primary key for a EntityData derived class default string Id property to an int property? 【发布时间】:2015-03-04 17:48:43 【问题描述】:我最近开始学习 Azure 移动服务,我关注了 this tutorial 并且我的模型的类需要从 EntityData 类继承。
从EntityData source code 开始,已经定义了一个 Id 属性作为主键,但它被定义为字符串,它不适用于我使用 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;
如果我尝试使用此类,我会收到一条错误消息,指出已定义 Id 属性。
有没有办法将不同的属性定义为主键?如果无法进行这种更改,有没有办法将此字符串 Id 属性用作增量主键?
【问题讨论】:
【参考方案1】:最好的解决方案是使用自动映射器。这是一篇博客文章,概述了如何做到这一点,本质上你存储一个 int,但是当它通过网络发送时将它转换为一个字符串:
http://blogs.msdn.com/b/azuremobile/archive/2014/05/22/tables-with-integer-keys-and-the-net-backend.aspx
【讨论】:
哇,它比我想象的要简单得多,但是如何将它设置为自动递增?主要是因为当我尝试不发送它时,我收到一条错误消息,指出需要 Id 属性。 一个简单的问题,您共享的该页面中的示例处理具有主键的实体,但如果我正在处理同时具有主键和外键的实体,请执行我必须在我的 WebApiConfig 类中为它们中的每一个映射等效的 DTO 字符串? 理想情况下,是的。或者,您可以使用 Automapper 来扁平化关系。以上是关于如何将 EntityData 派生类默认字符串 Id 属性的主键更改为 int 属性?的主要内容,如果未能解决你的问题,请参考以下文章