2015-09-09 41 views
2

我在這裏看到了一些關於堆棧溢出的相關問題,但是沒有一個看起來有答案。我會提出這個問題,然後包括我找到的相關SO問題的鏈接。從F#腳本使用app.config

我有一個用C#編寫的利用實體框架的核心域庫。因此,EF需要dbcontext將連接字符串傳遞給基礎(dbcontext)。在我的情況下,連接字符串居住在app.config(或web.config)當然取決於頂級項目,名稱是「AnnotatorModel」。

我需要從我的F#腳本中實例化DBContext來測試一些查詢和分析。

我已經將這個添加到了我的F#項目中的app.config中,並嘗試了一些關於SO的答案但沒有成功。有沒有人知道一個簡單易行的方法來實現這一目標?

這是代碼,意識到它試圖實例化dbcontext,AnnotatorModel時破壞。

let PredictBestEntities (number:int) (tokens:string seq) = 
    let db = new AnnotatorModel()  
    tokens 
    |> Seq.map ...etc etc 

謝謝, 〜大衛

相關問題:

Get and use connection string from App.config F# AppSettings provider

App.config and F# Interactive not working

https://social.msdn.microsoft.com/Forums/vstudio/en-US/5b4dba22-28ec-4bbd-bc53-c5102d0b938f/using-fsi-and-an-appconfig?forum=fsharpgeneral

回答

5

這不是你問什麼,但我無論如何還會添加此答案:

將構造函數重載添加到AnnotatorModel,使您可以傳遞連接字符串。這將使你寫:

let db = new AnnotatorModel("some connection string") 

在連接字符串完全依託在app.config中緊密結合庫來配置的是單一來源。這不是好的圖書館設計。您不僅在使用FSI時遇到問題,而且還會使其在運行時更改「配置值」,從數據庫而不是文件等加載它們變得困難。

庫不應該是耦合到app.config。只有應用程序應該使用app.config。

+1

將此與使用ConfigurationManager(在程序集System.Configuration中)讀取值結合起來,該程序使您可以在指定的路徑下加載.config文件.. – thinkbeforecoding