C# 标识列的数据类型必须为int、bigint、smallint、tinyint、decimal或numeric
我已经在Visual Studio 2012中创建了一个数据库项目,目标平台设置为“Windows Azure SQL数据库”。我添加了一个如下表:C# 标识列的数据类型必须为int、bigint、smallint、tinyint、decimal或numeric,c#,sql,database,visual-studio,azure,C#,Sql,Database,Visual Studio,Azure,我已经在Visual Studio 2012中创建了一个数据库项目,目标平台设置为“Windows Azure SQL数据库”。我添加了一个如下表: CREATE TABLE [dbo].[Organization] ( [Id] UNIQUEIDENTIFIER NOT NULL PRIMARY KEY NONCLUSTERED IDENTITY, [Name] NVARCHAR(100) NOT NULL, [CreationDate] DATETIME NOT
CREATE TABLE [dbo].[Organization]
(
[Id] UNIQUEIDENTIFIER NOT NULL PRIMARY KEY NONCLUSTERED IDENTITY,
[Name] NVARCHAR(100) NOT NULL,
[CreationDate] DATETIME NOT NULL DEFAULT GetDate()
)
GO
CREATE CLUSTERED INDEX [IX_Organization_CreationDate] ON [dbo].[Organization] ([CreationDate])
但它一直在抱怨:
Error 1 SQL71518: The identity column '[dbo].[Organization].[Id]' must be of data type int, bigint, smallint, tinyint, decimal, or numeric with a scale of 0, and the column must not be nullable. C:\Projects\Gastrology\MGP\trunk\Sources\Cfg.Mgp.Infrastructure.Database\Organization.sql 3 2 Cfg.Mgp.Infrastructure.Database
有人知道我为什么不能创建guid类型的主键吗?我做错了什么
谢谢 试试这样的方法:-
CREATE TABLE [dbo].[Organization]
(
[Id] UNIQUEIDENTIFIER NOT NULL PRIMARY KEY NONCLUSTERED DEFAULT NEWID(),
[Name] NVARCHAR(100) NOT NULL,
[CreationDate] DATETIME NOT NULL DEFAULT GetDate()
)
看看这个
从:-
使用guid作为键值的主要缺点是
大的它们是SQL中最大的数据类型之一,每秒16字节
服务器基于guid构建的索引将比
索引建立在标识列上,标识列通常为整数4字节。
**
>不仅如此,它们很难读懂。除非你需要一个
真正的全局唯一标识符,您最好还是坚持使用它
有身份
**试试这样的方法:-
CREATE TABLE [dbo].[Organization]
(
[Id] UNIQUEIDENTIFIER NOT NULL PRIMARY KEY NONCLUSTERED DEFAULT NEWID(),
[Name] NVARCHAR(100) NOT NULL,
[CreationDate] DATETIME NOT NULL DEFAULT GetDate()
)
看看这个
从:-
使用guid作为键值的主要缺点是
大的它们是SQL中最大的数据类型之一,每秒16字节
服务器基于guid构建的索引将比
索引建立在标识列上,标识列通常为整数4字节。
**
>不仅如此,它们很难读懂。除非你需要一个
真正的全局唯一标识符,您最好还是坚持使用它
有身份
**标识不能与GUID一起使用
改用
标识不能与GUID一起使用
改用
IDENTITY关键字用于自动递增通常用作主键的整数列。因为您使用的是唯一标识符,包含此关键字毫无意义。如何增加唯一标识符 只需删除IDENTITY关键字
IDENTITY关键字用于自动递增通常用作主键的整数列。因为您使用的是唯一标识符,包含此关键字毫无意义。如何增加唯一标识符 只需删除IDENTITY关键字
标识列是数字列,因为数据库必须自动递增它们…对GUID执行+1操作作为一个操作没有意义。如果您想使用GUID/UniqueIdentifier列作为主键,并让值自动生成,那么可能信息可以帮助标识列是数字的,因为数据库必须自动递增它们…对GUID执行+1操作作为一个操作没有意义。如果您想使用GUID/UniqueIdentifier列作为主键,并使值自动生成,那么信息可能会有所帮助。这似乎解决了这个问题。现在,如果我不想让数据库生成这个Guid,而是让mu域生成,那么我可以删除“默认NEWID”吗?是的,您可以删除它,但您需要将Id与记录一起插入。是的,我的域生成Guid。再次感谢!这似乎解决了问题。现在,如果我不想让数据库生成这个Guid,而是让mu域生成,那么我可以删除“默认NEWID”吗?是的,您可以删除它,但您需要将Id与记录一起插入。是的,我的域生成Guid。再次感谢!谢谢是的,我考虑过这一点,但因为我的域生成了这些密钥,并且我正在为Azure水平扩展+分布式应用程序开发,所以guid是我的最佳选择。这就是为什么我没有把身份证集中起来。谢谢。是的,我考虑过这一点,但因为我的域生成了这些密钥,并且我正在为Azure水平扩展+分布式应用程序开发,所以guid是我的最佳选择。这就是为什么我没有把id聚集起来。