将字符串(GUID)的类型更改为int后可能出现的问题?

时间:2016-07-30 19:33:45

标签: asp.net-mvc asp.net-identity guid asp.net-identity-2 asp.net-identity-3

我在我的MVC5项目中使用ASP.NET Identity 2.0,并希望将AspNetUsers的id字段的数据类型从字符串(GUID)更改为int,因为我有一些与AspNetUsers表相关的表。我在How to change type of id in Microsoft.AspNet.Identity.EntityFramework.IdentityUser上查看了许多页面,但似乎并不容易应用。另一方面,我看到改变AspNetUsers实体的id字段的数据类型是不够的,因为在其他身份类型之间存在一些pk / fk关系,即AspNetUserRoles,ApplicationGroupRoles等。在这种情况下,我应该使用身份表的原始数据类型,并将我的表的id类型从int更改为string?或者,如何在ASP.NET Identity 2.0中轻松更改所有标识表的数据类型?如果在3.0版本中这更容易,我也可以使用它。

1 个答案:

答案 0 :(得分:0)

我想扩展我的评论,因为几个月前我也试图这样做。

在我的情况下,我不确定我是否可以创建关系string - > int,首先从数据库中提取,并用于创建productId(int)和userId(int)之间的关系,我想要全部使用int id。

你可以让userIdstring一样,并创建像这样的关系;

public class Customer
{
  public int Id {get;set;}
  public string Name {get;set;}

  public string SalesManId {get;set;}
  [ForeignKey("SalesManId ")]
  public virtual ApplicationUser SalesMan {get;set;}
}

这是Customer实体,我已经声明了导航属性! 因此,SalesManId的类型为string。通过这种方式,您可以创建与ApplicationUser类的所有关系。

如果您仍想更改为int,那么这是一个youtube教程,我几个月前就已经关注了这个教程,并且我管理了从字符串更改为int

YouTube tutorial-How to change UserId from string to int