2011-08-08 120 views
0

相當簡單的問題,我不記得了。我們有三種環境:本地機器(每個開發人員都是唯一的),開發和生產。連接字符串在配置文件中(不是web.config,但web.config指向該文件);在給定時間只有一個活動(另外兩個被註釋掉;所有三個對於每個環境具有相同的名稱但不同的值)。使用Linq to Sql w /不同的環境/連接字符串

我正在使用ActiveRecord模式的基本版本來處理數據訪問(即Linq生成的CS文件中的靜態GetByProperty方法)。爲了確保我們所有人都可以使用Linq類,而不必與設計人員討論,我所要做的就是在我更新DataContext時,通過配置設置和連接字符串(例如ConfigurationManager.AppSetting["TheConnectionString"]),是正確的?我正在爲每個請求創建一個上下文的方法;是否有任何問題(DRY除外,因爲我會重複每個方法的整個連接字符串)我應該知道每次傳遞連接字符串,或者是該標準操作過程?

回答

1

您選擇了兩個我最不喜歡的東西(ActiveRecord和LINQ to SQL)。 ;-)無論如何,您可以將代碼移至工廠方法(或類似方法)以避免DRY問題,如果這一點特別出錯的話。您可能不得不做一些重構和重構,但您可以稍後再解決該問題。

至於將連接字符串更改爲環境特定的,這是相當標準的操作過程,無論您是使用LINQ,DataSets,EF或其他。實際持久性存儲的位置是配置問題。

+0

是的,我更喜歡NHibernate + Repository模式,但這對於工作來說「太複雜」並且引入了外部主題。我很幸運,我獲得了批准使用LINQ ..它將被存儲Procs和DataSets X-( –

+1

LINQ是一個偉大的抽象。我喜歡它迭代對象,這是它的優勢。作爲一種數據訪問技術,它由於EF團隊「落後於」而大部分被拋在了一起,我希望它會死在可怕的死亡之下.-)然而,我明白「獲得批准的運氣」問題。我完全在儘可能多地使用配置的一面,因爲太多人硬編碼(並且應該死於一次可怕的死亡?) –

+0

是的,死於硬編碼器! –