MVC Identity 2.2.1 - 主键(Guid)作为UniqueIdentifier而不是nVarChar(128)

时间:2016-04-29 20:48:10

标签: asp.net asp.net-mvc asp.net-mvc-5 asp.net-identity asp.net-identity-2

当前项目:

  • ASP.NET 4.5.2
  • MVC 5
  • 身份2.2.1

我遇到的一个问题是我在整个项目的其余部分正确使用GUID,数据库字段类型是UniqueIdentifier。遗憾的是,Identity并没有遵循相同的规则,并且由于某些不可理喻的原因,他们将表字段创建为字符串--nVarChar(128)。

我发现了一些点击,显示如何正确修改Identity以使用UniqueIdentifier并将Guids强制转换为正确的格式,但是所有这些资源目前都已过时 - 大部分用于pre-v2和最新版本一个用于2.0.0-alpha,它提供的代码与当前版本的Identity不匹配或无效。

我已经尽最大努力向谷歌发布了什么,但要么它不存在,要么我的谷歌今天很弱。我正在寻找关于如何将DB字段更改为UniqueIdentifier(适用于Guid)的任何指针,同时仍然可以正常工作/转换。

编辑:似乎某个人或系统已将此文章作为可能的副本链接到另一篇文章。问题是,我已经将其他文章链接为对身份的v1.x使用,因此不能直接应用。即使我链接到的2.0.0-alpha代码也不起作用。即使链接文章底部的附加材料在2.2.1下也不起作用。

1 个答案:

答案 0 :(得分:-3)

也许this会有所帮助:

实体框架 - 使用Guid作为主键

<强>更新 因此,如果您将使用这样的GUID:

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }

EF会在您的数据库表中生成 uniqueidentifier ,但将列值设置为(newsequentialid())并使非常重要StoreGeneratedPattern 到Identity。 因此,这将自动生成下一个唯一ID

using (ApplicationDbContext context = new ApplicationDbContext())
{
    var item = new Item
                 {
                     Name = "Random",
                     Description= "Person";
                 };

    context.Items.Add(item);
    context.SaveChanges();
    Console.WriteLine(item.Id);
}

首页,这将有所帮助。