用c#创建新的sql server表

我有这个代码来创建新的SQL表,当我执行它时它显示我在屏幕截图上的这个错误。 在我的数据库中没有这样的表。 它显示此错误任何名称的表。 谁能帮我?

public void Create(string TName, string ConString) { try { using (SqlCommand cmd = new SqlCommand("CREATE TABLE [dbo].['" + TName + "'](" + "[ID] [int] IDENTITY(1,1) NOT NULL," + "[DateTime] [date] NOT NULL," + "[BarCode] [nvarchar](max) NOT NULL," + "[ArtNumber] [nvarchar](max) NOT NULL," + "[ProductName] [nvarchar](50) NOT NULL," + "[Quantity] [int] NOT NULL," + "[SelfPrice] [decimal](18, 2) NOT NULL," + "[Price] [decimal](18, 2) NOT NULL," + "[Disccount] [int] NULL," + "[Comment] [nvarchar](max) NULL," + "CONSTRAINT ['" + TName + "'] PRIMARY KEY CLUSTERED " + "(" + "[ID] ASC" + ")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]" + ") ON [PRIMARY]", new SqlConnection(ConString))) { cmd.Connection.Open(); cmd.ExecuteNonQuery(); cmd.Connection.Close(); } } catch (Exception) { throw; } } 

替代文字

您为表及其主键使用相同的名称。 请改为"CONSTRAINT ['pk_" + TName + "'] PRIMARY KEY CLUSTERED "

该错误消息似乎与表的名称无关。 它似乎与约束的名称有关。 看起来您正在命名一个约束’beso’,并且该名称中的另一个对象已存在于您的数据库中。

您也可以像这样使用Mig# ,而不是使用SQL语法。

  var schema = new DbSchema(ConnectionString, DbPlatform.SqlServer2014); schema.Alter(db => db.CreateTable(TName) .WithPrimaryKeyColumn("Id", DbType.Int32).AsIdentity() .WithNotNullableColumn("DateTime", DbType.Date) ...); 

这种方法的唯一缺点是Mig#不适合使用非常SQL Server特定的function,因为它以可移植的方式支持许多平台。