2012-08-27 35 views
0

我正在爲我的MVC4應用程序編寫一組單元測試。我想創建一個測試數據庫,在每次測試之前將會丟棄並重新填充。 對於我需要一個種子功能,會做這樣的事情:將數據庫中的數據導出到C#語句中

var project = new Project() {Name = "Project One", Description = "Watermelons make you high!"} 
_context.Projects.Add(project); 

var projectTwo = new Project() {Name = "Project Two", Description = "Insert your joke here"} 
_context.Projects.Add(project); 

等,爲我準備再次進行測試的所有對象。越多越好。

而我很懶。我不想用C#編寫所有這些。但是我可以使用我開發的Web應用程序快速創建大量測試數據。

現在的問題是如何將數據庫中的數據(sql server 2012)轉換爲C#語句,就像上面的例子一樣?

我可以將數據庫導出爲sql語句,並且每次爲每個腳本運行它。但是每當我的模型發生變化時(比如新字段),我都需要重新創建sql。有時,如果能夠訪問已放入數據庫的對象,並且sql腳本不允許這樣做,那麼這樣做會很好。

另一個選項是掀起一些正則表達式來將sql-script轉換爲對象。不知道這是多少工作。 我可能最終會這樣做。

那麼,有沒有可以將數據庫中的數據轉換爲C#對象的工具?

+0

從我的理解你有一個測試數據庫,你想從數據和加載到_context。爲什麼你不能連接測試數據庫並使用entityframework來循環數據庫並加載_context? – KingPancake

+0

這就是問題:任何地方都沒有數據。我需要創建它。而不是編寫c#語句,我想使用接口,然後將創建的數據轉換爲c#。我會在每次測試中放棄該數據庫。因此,這必須是c#語句,以便我可以重新創建數據庫。 – trailmax

+0

我現在有點困惑。你能告訴我這個創建數據的網絡應用是什麼嗎?當你創建數據放入數據庫時​​,它是在sql語句中?它會直接進入數據庫嗎?或者是什麼? – KingPancake

回答

1

爲什麼不創建for循環來運行100次。並在那裏有它創建一個新的項目,並把它添加到像_context:

for(int i = 0; i < 100; i++) 
{ 
    _context.Projects.Add(new Project() {Name = string.format("Name{0}", i), Description = string.format("Description{0}", i) }); 
} 

和你一樣在聊天建議,得到的隨機單詞的詞典]到位名稱和描述來獲得隨機數據每次。

+0

是的 - 簡單而有效。爲什麼我自己沒有想到這個 - 我不知道。可能缺乏睡眠不利於 - ) – trailmax

相關問題