2010-12-27 9 views
8

で作成するこのコードを実行して新しいSQLテーブル を作成すると、このエラーが表示されます。このエラーはスクリーンショットに表示されます。私のデータベースにはそのようなテーブルはありません。このエラーはテーブルの任意の名前を示します。誰でも助けてくれますか?新しいSQL ServerテーブルをC#

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; 
     } 
    } 

alt text

+2

「ディスカウント」という名前を付けない限り、「ディスカウント」列の名前は間違っています。英語では、「ディスカウント」には「c」が1つしかありません。 –

+0

BTW、コードと正確なエラーメッセージを表示するために+1。これは、ここで質問する方法の主な例です。 – NotMe

答えて

5

あなたは、テーブルとその主キーに同じ名前を使用しています。代わりに"CONSTRAINT ['pk_" + TName + "'] PRIMARY KEY CLUSTERED "を入力してください。

1

エラーメッセージは、テーブルの名前に関連していないようです。それは制約の名前に関連しているようです。あなたは 'beso'という制約に名前を付けていて、その名前で別のオブジェクトがすでにDBに存在しているようです。

0

代わりにSQL構文で戦って、あなたもこのようなMig#を使用することができます。

 var schema = new DbSchema(ConnectionString, DbPlatform.SqlServer2014); 
     schema.Alter(db => db.CreateTable(TName) 
      .WithPrimaryKeyColumn("Id", DbType.Int32).AsIdentity() 
      .WithNotNullableColumn("DateTime", DbType.Date) 
      ...); 
ミグ#はそれとして非常にSQL Serverの特定の機能を使用するのに適していないということで、このアプローチの

ザ・唯一のダウンサイドポータブルな方法で多くのプラットフォームをサポートします。

関連する問題