gpt4 book ai didi

f# - 应该如何将 F# SqlDataConnection TypeProvider 与 App.Config 文件一起使用?

转载 作者:行者123 更新时间:2023-12-04 01:14:41 25 4
gpt4 key购买 nike

我正在使用类型表达式:

type dbSchema = SqlDataConnection<ConnectionStringName="X1", ConfigFile="App.config">

这在编译时效果很好(我可以完全访问所有 db 类型),但在运行时失败。我认为这是因为控制台应用程序的 bin 中生成的配置文件目录被命名为其他名称,例如 MyAppName.exe.config ,因此 App.config找不到文件。

当然,对于使用 web.config 的 ASP.NET MVC 类型的应用程序,没有问题,因为编译和运行时配置文件名是相同的。

幸运的是,放置了一个副本 App.configbin目录确实解决了这个问题,但这是我们应该做的吗?有什么想法吗?

最佳答案

类型提供程序定义如何工作的描述具有误导性 - typedef 中的值实际上仅在代码/编译时重要,并且在运行时作为默认值。但是,正如您所指出的,在运行时找到正确的配置文件并不是很聪明。

您可以通过将连接字符串作为参数传递给 GetDataContext 来完成您想要的操作:

type dbSchema = SqlDataConnection<ConnectionStringName="X2">
let db = dbSchema.GetDataContext(ConfigurationManager.ConnectionStrings.["X2"].ConnectionString)

...或者如果您还想让它在 F# 交互式中工作,请像这样包装它:
type dbSchema = SqlDataConnection<ConnectionStringName="X2">
#if COMPILED
let db = dbSchema.GetDataContext(ConfigurationManager.ConnectionStrings.["X2"].ConnectionString)
#else
let db = dbSchema.GetDataContext()
#endif

(请注意,您将需要对 System.Configuration 的引用。)

关于f# - 应该如何将 F# SqlDataConnection TypeProvider 与 App.Config 文件一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13768757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com