我和我的團隊目前正在做一個項目,我們正在使用Entity Framework 4.1(Code First)。我們希望編寫一些測試,但我們不希望它們運行在我們的主數據庫上,因爲我們在新加坡有一個團隊爲我們所做的事情編寫客戶端,並且他們不斷地訪問該數據庫。開發和生產數據庫
所以爲了避免運行我們的測試時的干擾,我們希望有一個不同的數據庫進行測試。在使用實體框架時,我們如何處理第二個數據庫?我們需要一個半自動的解決方案(至少),所以每次我們需要運行測試時,我們都無需擺弄Web.config。
我和我的團隊目前正在做一個項目,我們正在使用Entity Framework 4.1(Code First)。我們希望編寫一些測試,但我們不希望它們運行在我們的主數據庫上,因爲我們在新加坡有一個團隊爲我們所做的事情編寫客戶端,並且他們不斷地訪問該數據庫。開發和生產數據庫
所以爲了避免運行我們的測試時的干擾,我們希望有一個不同的數據庫進行測試。在使用實體框架時,我們如何處理第二個數據庫?我們需要一個半自動的解決方案(至少),所以每次我們需要運行測試時,我們都無需擺弄Web.config。
解決方案從this後逮捕:
//Get the connection string from app.config and assign it to sqlconnection string builder
SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(((EntityConnection)context.Connection).StoreConnection.ConnectionString);
sb.IntegratedSecurity = false;
sb.UserID ="User1";
sb.Password = "Password1";
//set the object context connection string back from string builder. This will assign modified connection string.
((EntityConnection)context.Connection).StoreConnection.ConnectionString = sb.ConnectionString;
這使您可以在運行時改變連接字符串。還有其他幾種可能的解決方案:
與周圍的web.config順藤摸瓜能的過程是很容易,除非你正在使用web.config Transformations這是錯誤...。
我會在Visual Studio中爲您的項目創建一個新配置「Test」...它可以是您現有開發配置(或調試/發佈,無論)的副本。然後,右鍵單擊解決方案資源管理器中的Web.config文件,然後單擊添加配置轉換。按照指示here如何編寫轉換文件。如果你只需要改變的EF連接字符串測試環境會是這個樣子的web.Test.config:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="AdventureWorksEntities"
connectionString="metadata=.\AdventureWorks.csdl|.\AdventureWorks.ssdl|.\AdventureWorks.msl;
provider=System.Data.SqlClient;provider connection string='Data Source=TestDB;
Initial Catalog=AdventureWorks;Integrated Security=True;Connection Timeout=60;
multipleactiveresultsets=true'" providerName="System.Data.EntityClient"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
只是一定要建立在你想要的正確配置下運行你的測試。
還有一個Visual Studio外接SlowCheetah這使得這整個過程在IDE中非常無縫的。
+1爲SlowCheetah – 2012-04-07 23:49:53
@SayedIbrahimHashimi +1是因爲「在MS Build上寫了這本書」以及使我的工作更輕鬆的許多工具。感謝那。 – 2012-04-09 21:22:22
不客氣:) – 2012-04-28 02:45:02
你在說什麼樣的「測試」?使用部署腳本中指定的自己的數據庫(通過修改web.config)爲您的遠程團隊部署單個版本時出了什麼問題? – 2012-03-31 20:02:02
我們正在開發一個WCF Web服務,並且正在認真開發中。必須爲他們部署一個獨特的版本(使用他們自己的Web.config)意味着,我們每次部署時都必須完成所有這些手動工作。 – Nilks 2012-03-31 20:14:51
不,它不會。似乎你從來沒有聽說過只能設置一次並自動運行的持續集成/部署。 – 2012-03-31 20:17:27