2016-03-07 62 views
0

我有一个MVC项目,并且在数据库中我想创建一个表,其中有一列和多个列,并且在我的解决方案中定义了某个列表的计数。如何实现这一目标?创建一个循环的列

CREATE TABLE [dbo].[Table] 
(
    [Id] INT NOT NULL PRIMARY KEY, 
    [tag] NVARCHAR(MAX) NOT NULL 

    while... <something becomes MyList.Count> 
    [value] NVARCHAR(MAX) 
) 
+1

你将建立一个SQL字符串遍历列表附加列定义,然后执行它。通常以编程方式创建可变数量的列是一种迹象,无论数据属于其自己表中的行。 –

+0

好吧,但在哪里添加这个SQL字符串,它的执行?不,它不是列的变量。这更像是我的项目列表是可变大小,我会定期更新它,但我也想为每个元素添加一列,我希望它是更自动的。 –

+1

你为什么要这样做?这是一个非常糟糕的设计的标志。 –

回答

0

我想你必须编写创建后的循环,这将是一个ALTER TABLE一个单独的查询。

一样,

WHILE(condition) 
BEGIN 
    ALTER TABLE Table1 ADD column_name datatype 
END 

这里,条件应该是计数。列名取决于您传递值的方式。我将它们作为表格格式的XML数据传递,然后将其转换为SQL中的表格,然后在更改时通过它们进行循环。

一样,

WHILE((SELECT COUNT(id) FROM temp)) 
BEGIN 
    EXECUTE('ALTER TABLE Table1 ADD COLUMN '+(SELECT TOP 1 column_name FROM temp)+' NVARCHAR(MAX)') 
    DELETE FROM temp WHERE temp.id = (SELECT TOP 1 id FROM temp) 
END 

希望这个作品:)