我有一个名为UserCredentials的表,它有一个uniqueidentifier列[UserCredentialId]。当我尝试创建一个新用户时,我在第一次尝试中得到00000000-0000-0000-0000-000000000000,然后当我尝试添加另一个用户时,它说PK不能被复制。起初,我很难猜测这意味着什么,但是,我认为这是因为我的uniqueidentifier没有生成随机id。
该怎么办呢?
编辑
下面是我的SQL表结构:
CREATE TABLE [dbo].[UserCredential](
[UserCredentialId] [uniqueidentifier] NOT NULL,
[UserRoleId] [int] NOT NULL,
[Username] [varchar](25) NOT NULL,
[Password] [varchar](50) NOT NULL,
[PasswordSalt] [varchar](max) NOT NULL,
[FirstName] [varchar](50) NOT NULL,
[LastName] [varchar](50) NOT NULL,
[PayorCode] [varchar](20) NOT NULL,
[ProviderCode] [varchar](50) NULL,
[CorporationCode] [varchar](50) NULL,
[Department] [varchar](50) NULL,
[Status] [varchar](1) NOT NULL,
[DateCreated] [datetime] NOT NULL,
[DateActivated] [datetime] NULL,
[Deactivated] [datetime] NULL,
[DateUpdated] [datetime] NULL,
[CreatedBy] [varchar](50) NOT NULL,
[UpdatedBy] [varchar](50) NOT NULL,
[EmailAddress] [varchar](50) NULL,
[ContactNumber] [int] NULL,
[Picture] [varbinary](max) NULL,
CONSTRAINT [PK_UserCredential_1] PRIMARY KEY CLUSTERED
(
[UserCredentialId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]我已经将其设置为(newid()),但仍然无法工作。
发布于 2014-05-14 01:56:39
将用户实例的Id设置为Guid.NewGuid();
user.Id = Guid.NewGuid();发布于 2014-05-14 04:59:03
将表定义更改为
[UserCredentialId] UNIQUEIDENTIFIER DEFAULT (NEWSEQUENTIALID()) NOT NULL检查为什么喜欢NEWSEQUENTIALID而不是newid在http://technet.microsoft.com/en-us/library/ms189786.aspx。
当GUID列用作行标识符时,使用NEWSEQUENTIALID比使用NEWID函数更快。这是因为NEWID函数导致随机活动,并且使用较少的缓存数据页。使用NEWSEQUENTIALID还有助于完全填充数据和索引页。
发布于 2014-05-14 02:24:51
在插入期间,可以将表中的所有值默认为新值,这与标识非常类似。
运行此命令可以将所有插入的默认值设置为使用newid()。
ALTER TABLE [dbo].[UserCredential] ADD CONSTRAINT [DF_UserCredential_UserCredentialID] DEFAULT (newid()) FOR [UserCredentialId]
GOhttps://stackoverflow.com/questions/23644390
复制相似问题