2016-03-07 60 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 

希望這個作品:)