VS数据库项目主键名称

时间:2016-06-28 09:40:05

标签: sql-server visual-studio visual-studio-2015 database-project

我在Visual Studio 2015中有一个数据库项目。我想命名主键,但它似乎忽略了任何尝试。命名默认约束虽然有效。

CREATE TABLE [dbo].[Stock]
(
    [Id] INT CONSTRAINT [PK_Stock_Id] NOT NULL PRIMARY KEY, 
    [StockCode] NVARCHAR(6) NOT NULL, 
    [CreatedDate] DATETIME2 CONSTRAINT [DF_Stock_CreatedDate] DEFAULT sysutcdatetime() NOT NULL
)
GO

如果单击主键,它甚至具有名称属性,但它是只读的。我得到它只是创建脚本而不是发布到SQL Server,它删除了主键上的单词约束和名称。

2 个答案:

答案 0 :(得分:3)

我注意到了同样的行为(这也适用于我的Visual Studio 2015)。

vs2015-db-unnamed-constraint

GUI选项

我发现删除然后重新设置主键后,自动名称@HeaderMap header: Map<String, ?> 被赋予PK约束。

  1. 右键单击PK字段并选择“删除主键”
    • [参见Keys节点下的PK_<tableName> PK约束消失]
  2. 再次右键单击该字段,然后选择“设置主键”
    • [参见PK约束重新出现在Keys节点下,这次命名为]
  3. 我不知道是否有办法在GUI中直接编辑约束的name属性。因此,如果您希望对名称进行更精细的控制(即名称与表名无关),脚本编辑可能是唯一的选择。

    (对于这个问题,我显然已经很晚了,但也许这个答案可能对其他可能在以后遇到这个问题的人有用。)

答案 1 :(得分:0)

这对你有用:

CREATE TABLE [dbo].[Stock]
(
[Id] INT NOT NULL, 
[StockCode] NVARCHAR(6) NOT NULL, 
[CreatedDate] DATETIME2 NOT NULL
)
GO

ALTER TABLE dbo.Stock  ADD CONSTRAINT
DF_Stock_CreatedDate DEFAULT GETDATE() FOR CreatedDate
GO

ALTER TABLE dbo.Stock ADD CONSTRAINT
PK_Stock_Id PRIMARY KEY CLUSTERED 
(
Id
)
GO