ASP.NET身份-如何将dbo.AspNetUsers.Id更改为非聚集索引?

密涅瓦

我正在使用ASPNET Identity 2.0,并且需要:

  • 添加一个名为ApplicationUserId [int]聚集索引的新字段
  • 将dbo.AspNetUsers.Id nvarchar字段从群集索引更改为非群集索引

在我的Models \ IdentityModel.cs中,我添加了:

    public class ApplicationUser: IdentityUser
    {
            [Index(IsClustered = true, IsUnique = true)]
            [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
            public int ApplicationUserId { get; set; }
    }

当然,我知道这会出错,因为我知道Id当前是一个聚集索引。如何更改ID,以使默认值不包含clused索引?

基本上,我想要这样做的原因是我们的DBA不想使用nvarchar(128)(这是AspNetUsers表中的GUID)的外键。

或者我只是将其创建为:

    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ApplicationUserId { get; set; }

然后在创建表后手动修复索引?

还是我使用整数键而不是字符串的唯一选择

我正在使用.NET 4.5并安装了Identity 2.0示例项目

 Install-Package Microsoft.AspNet.Identity.Samples -Pre

在此先感谢您的帮助!

密涅瓦

我无需将GUID [nvarchar]转换为[int]就可以工作

基本上,我更新了Models \ IdentityModel.cs文件

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ApplicationUserId { get; set; }

然后,我手动更新了表(AspNetUserLogins,AspNetUserClaims和AspNetUserRoles引用了AspNetUsers.Id,我仍然希望保持原样。

begin tran
ALTER TABLE [dbo].[AspNetUserLogins] DROP CONSTRAINT [FK_dbo.AspNetUserLogins_dbo.AspNetUsers_UserId]
ALTER TABLE [dbo].[AspNetUserClaims] DROP CONSTRAINT [FK_dbo.AspNetUserClaims_dbo.AspNetUsers_UserId]
ALTER TABLE [dbo].[AspNetUserRoles] DROP CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetUsers_UserId]
ALTER TABLE dbo.[AspNetUsers] DROP CONSTRAINT [PK_dbo.AspNetUsers]
--Uncomment this line in case you need to modify this table again
--ALTER TABLE dbo.[AspNetUsers] DROP CONSTRAINT [dbo.AspNetUsers_ApplicationUserId]

-- Add the constraints back, but now nonclustered
ALTER TABLE dbo.[AspNetUsers] add constraint [PK_dbo.AspNetUsers] primary key     nonclustered 
(
    [Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

-- Add the other constraints back
ALTER TABLE [dbo].[AspNetUserLogins]  WITH CHECK ADD CONSTRAINT [FK_dbo.AspNetUserLogins_dbo.AspNetUsers_UserId] FOREIGN KEY([UserId])
REFERENCES [dbo].[AspNetUsers] ([Id])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[AspNetUserClaims]  WITH CHECK ADD  CONSTRAINT [FK_dbo.AspNetUserClaims_dbo.AspNetUsers_UserId] FOREIGN KEY([UserId])
REFERENCES [dbo].[AspNetUsers] ([Id])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[AspNetUserRoles]  WITH CHECK ADD  CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetUsers_UserId] FOREIGN KEY([UserId])
REFERENCES [dbo].[AspNetUsers] ([Id])
ON DELETE CASCADE
GO

-- Add NEW constraint with unique clustered
ALTER TABLE dbo.[AspNetUsers] add constraint [dbo.AspNetUsers_ApplicationUserId] unique clustered 
(
[ApplicationUserId]
)
commit tran

当您签出dbo.AspNetUsers的创建表脚本时,现在看起来像这样:

CREATE TABLE [dbo].[AspNetUsers](
    [Id] [nvarchar](128) NOT NULL,
    [ApplicationUserId] [int] IDENTITY(1,1) NOT NULL,
    [Email] [nvarchar](256) NULL,
    [EmailConfirmed] [bit] NOT NULL,
    [PasswordHash] [nvarchar](max) NULL,
    [SecurityStamp] [nvarchar](max) NULL,
    [PhoneNumber] [nvarchar](max) NULL,
    [PhoneNumberConfirmed] [bit] NOT NULL,
    [TwoFactorEnabled] [bit] NOT NULL,
    [LockoutEndDateUtc] [datetime] NULL,
    [LockoutEnabled] [bit] NOT NULL,
    [AccessFailedCount] [int] NOT NULL,
    [UserName] [nvarchar](256) NOT NULL,
 CONSTRAINT [PK_dbo.AspNetUsers] PRIMARY KEY NONCLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY],
 CONSTRAINT [dbo.AspNetUsers_ApplicationUserId] UNIQUE CLUSTERED 
(
    [ApplicationUserId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP.NET身份-如何将dbo.AspNetUsers.Id更改为非聚集索引?

来自分类Dev

如何为 Asp.Net Identity 自定义表名(例如从 AspNetUsers 更改为自定义名称)

来自分类Dev

Asp.net身份:为什么聚集索引位于guid(nvarchar)列上,以及如何更改它?

来自分类Dev

Asp.net身份:为什么聚集索引位于guid(nvarchar)列上,以及如何更改它?

来自分类Dev

ASP.NET - 将 AspNetUsers 表中的所有用户显示到身份中的下拉列表中?

来自分类Dev

Asp.NET MVC 5实体框架中的无效对象名称“ dbo.AspNetUsers”

来自分类Dev

Asp.NET MVC 5实体框架中的无效对象名称“ dbo.AspNetUsers”

来自分类Dev

我可以将asp.net MVC 5身份用户ID从string(GUID)更改为int

来自分类Dev

新的ASP.NET MVC 6身份的AspNetUsers表中的ConcurrencyStamp列的用途是什么?

来自分类Dev

使用ASP.Net Identity EntityFramwork到ID列设置为UniqueIdentifier的现有AspNetUsers表

来自分类Dev

如何在ASP.Net MVC 5的AspNetUsers表中获取ApplicationUser的数量?

来自分类Dev

我可以将asp.net mvc 5身份用户ID从字符串(GUID)更改为int

来自分类Dev

ASP.NET Identity从AspNetUsers表中删除列

来自分类Dev

如何将Asp.Net Identity身份验证与Azure AD身份验证连接

来自分类Dev

更改密码asp.net身份

来自分类Dev

需要将Asp.Net身份(RTM)用户ID从nvarchar(128)更改为uniqueidentifier

来自分类Dev

使用asp.net身份更改当前用户的用户名后如何更改身份验证cookie

来自分类Dev

如何将ASP.NET Core身份链接到另一个实体?

来自分类Dev

如何将ASP.NET身份数据库与自己的数据库连接?

来自分类Dev

如何将Asp.net身份与数据库一起使用

来自分类Dev

如何将ASP.net身份移动到其他上下文

来自分类Dev

如何将ASP.NET身份连接到SQL Azure

来自分类Dev

如何将asp.net身份邮件功能用于其他功能[显示错误]

来自分类Dev

迁移到Asp.Net Identity 2.0:AspNetUsers表中未创建新列

来自分类Dev

在ASP.NET Identity中为AspNetUsers表使用自定义属性

来自分类Dev

Asp.net MVC错误System.Data.SqlClient.SqlException:'无效的对象名称'AspNetUsers'。

来自分类Dev

即使在OnModelCreate中将其重命名,ASP.NET迁移也希望AspNetUsers

来自分类Dev

如何更改身份asp.net MVC中的用户登录凭据?

来自分类Dev

创建后如何更改ASP.NET MVC身份验证?

Related 相关文章

  1. 1

    ASP.NET身份-如何将dbo.AspNetUsers.Id更改为非聚集索引?

  2. 2

    如何为 Asp.Net Identity 自定义表名(例如从 AspNetUsers 更改为自定义名称)

  3. 3

    Asp.net身份:为什么聚集索引位于guid(nvarchar)列上,以及如何更改它?

  4. 4

    Asp.net身份:为什么聚集索引位于guid(nvarchar)列上,以及如何更改它?

  5. 5

    ASP.NET - 将 AspNetUsers 表中的所有用户显示到身份中的下拉列表中?

  6. 6

    Asp.NET MVC 5实体框架中的无效对象名称“ dbo.AspNetUsers”

  7. 7

    Asp.NET MVC 5实体框架中的无效对象名称“ dbo.AspNetUsers”

  8. 8

    我可以将asp.net MVC 5身份用户ID从string(GUID)更改为int

  9. 9

    新的ASP.NET MVC 6身份的AspNetUsers表中的ConcurrencyStamp列的用途是什么?

  10. 10

    使用ASP.Net Identity EntityFramwork到ID列设置为UniqueIdentifier的现有AspNetUsers表

  11. 11

    如何在ASP.Net MVC 5的AspNetUsers表中获取ApplicationUser的数量?

  12. 12

    我可以将asp.net mvc 5身份用户ID从字符串(GUID)更改为int

  13. 13

    ASP.NET Identity从AspNetUsers表中删除列

  14. 14

    如何将Asp.Net Identity身份验证与Azure AD身份验证连接

  15. 15

    更改密码asp.net身份

  16. 16

    需要将Asp.Net身份(RTM)用户ID从nvarchar(128)更改为uniqueidentifier

  17. 17

    使用asp.net身份更改当前用户的用户名后如何更改身份验证cookie

  18. 18

    如何将ASP.NET Core身份链接到另一个实体?

  19. 19

    如何将ASP.NET身份数据库与自己的数据库连接?

  20. 20

    如何将Asp.net身份与数据库一起使用

  21. 21

    如何将ASP.net身份移动到其他上下文

  22. 22

    如何将ASP.NET身份连接到SQL Azure

  23. 23

    如何将asp.net身份邮件功能用于其他功能[显示错误]

  24. 24

    迁移到Asp.Net Identity 2.0:AspNetUsers表中未创建新列

  25. 25

    在ASP.NET Identity中为AspNetUsers表使用自定义属性

  26. 26

    Asp.net MVC错误System.Data.SqlClient.SqlException:'无效的对象名称'AspNetUsers'。

  27. 27

    即使在OnModelCreate中将其重命名,ASP.NET迁移也希望AspNetUsers

  28. 28

    如何更改身份asp.net MVC中的用户登录凭据?

  29. 29

    创建后如何更改ASP.NET MVC身份验证?

热门标签

归档