SQL唯一标识符

SQL唯一标识符,sql,sql-server,entity-framework,tsql,uniqueidentifier,Sql,Sql Server,Entity Framework,Tsql,Uniqueidentifier,我有一个名为UserCredentials的表,它有一个uniqueidentifier列[UserCredentialId]。当我尝试创建一个新用户时,我在第一次尝试中得到00000000-0000-0000-0000-000000000000,然后当我尝试添加另一个用户时,它说PK不能重复。起初我很难猜出它是什么意思,但我想这是因为我的uniqueidentifier没有生成随机id 怎么办 编辑 以下是我的SQL表结构: CREATE TABLE [dbo].[UserCredential

我有一个名为
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()
),但仍然不起作用。

将用户实例的Id设置为Guid.NewGuid()

user.Id = Guid.NewGuid();

将用户实例的Id设置为Guid.NewGuid()

user.Id = Guid.NewGuid();

将用户实例的Id设置为Guid.NewGuid()

user.Id = Guid.NewGuid();

将用户实例的Id设置为Guid.NewGuid()

user.Id = Guid.NewGuid();

在插入过程中,可以将表中的所有值默认为一个新值,就像标识一样

运行此命令可将所有插入的默认值设置为使用newid()


在插入过程中,可以将表中的所有值默认为一个新值,就像标识一样

运行此命令可将所有插入的默认值设置为使用newid()


在插入过程中,可以将表中的所有值默认为一个新值,就像标识一样

运行此命令可将所有插入的默认值设置为使用newid()


在插入过程中,可以将表中的所有值默认为一个新值,就像标识一样

运行此命令可将所有插入的默认值设置为使用newid()


将表定义更改为

[UserCredentialId] UNIQUEIDENTIFIER DEFAULT (NEWSEQUENTIALID()) NOT NULL
检查为什么在上更喜欢NEWSEQUENTIALID而不是newid

当GUID列用作行标识符时,使用NEWSEQUENTIALID可能比使用NEWID函数更快。这是因为NEWID函数会导致随机活动,并使用较少的缓存数据页。使用NEWSEQUENTIALID还有助于完全填充数据和索引页面


将表定义更改为

[UserCredentialId] UNIQUEIDENTIFIER DEFAULT (NEWSEQUENTIALID()) NOT NULL
检查为什么在上更喜欢NEWSEQUENTIALID而不是newid

当GUID列用作行标识符时,使用NEWSEQUENTIALID可能比使用NEWID函数更快。这是因为NEWID函数会导致随机活动,并使用较少的缓存数据页。使用NEWSEQUENTIALID还有助于完全填充数据和索引页面


将表定义更改为

[UserCredentialId] UNIQUEIDENTIFIER DEFAULT (NEWSEQUENTIALID()) NOT NULL
检查为什么在上更喜欢NEWSEQUENTIALID而不是newid

当GUID列用作行标识符时,使用NEWSEQUENTIALID可能比使用NEWID函数更快。这是因为NEWID函数会导致随机活动,并使用较少的缓存数据页。使用NEWSEQUENTIALID还有助于完全填充数据和索引页面


将表定义更改为

[UserCredentialId] UNIQUEIDENTIFIER DEFAULT (NEWSEQUENTIALID()) NOT NULL
检查为什么在上更喜欢NEWSEQUENTIALID而不是newid

当GUID列用作行标识符时,使用NEWSEQUENTIALID可能比使用NEWID函数更快。这是因为NEWID函数会导致随机活动,并使用较少的缓存数据页。使用NEWSEQUENTIALID还有助于完全填充数据和索引页面


你能发布你的SQL表脚本吗?我的意思是创建一个。你把什么设置成了
newid()
。没什么了。我想他在字段的字段属性列表中将DefaultValueForBinding设置为NEWID()。你能发布你的SQL表脚本吗?我的意思是创建一个。你将什么设置为
NEWID()
?只是普通的NEWID()。没什么了。我想他在字段的字段属性列表中将DefaultValueForBinding设置为NEWID()。你能发布你的SQL表脚本吗?我的意思是创建一个。你将什么设置为
NEWID()
?只是普通的NEWID()。没什么了。我想他在字段的字段属性列表中将DefaultValueForBinding设置为NEWID()。你能发布你的SQL表脚本吗?我的意思是创建一个。你将什么设置为
NEWID()
?只是普通的NEWID()。没什么了。我想他在字段的字段属性列表中将DefaultValueForBinding设置为NEWID()。这和我建议的答案相同。Guid.NewGuid();我会提出同样的答案。Guid.NewGuid();我会提出同样的答案。Guid.NewGuid();我会提出同样的答案。Guid.NewGuid();