2015-09-09 38 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