我的项目有3层结构DataAccessLayer,BusinessLogicLayer和Website。
在我的DataAccessLayer中,我使用F#库项目,从app.config文件访问connectionstring
F#代码 -
type dbSchema = SqlDataConnection<"","MyConnection">
let connectionString = System.Configuration.ConfigurationManager.ConnectionStrings. ["MyConnection"].ConnectionString
App.config代码 -
<connectionStrings>
<add name="MyConnection" connectionString="Data Source=MyServer;Initial Catalog=MyDB;Persist Security Info=True;User ID=sa;Password=xyz;" providerName="System.Data.SqlClient"/>
</connectionStrings>
现在我在网站BusinessLogic和网站项目中提供了这个dll的参考。
我正在调用BusinessLogicLayer的函数来获取数据 -
var MyDataList = BusinessLogic.GetAllData()。ToList();
现在的问题是,该网站正在app.config文件而不是web.config中搜索connectionstring。我希望它从web.config
获取connectionstring答案 0 :(得分:1)
您可以拥有Web项目的web.config或应用程序的app.config。
作为替代方案,您可以加载自定义配置文件,另请参阅http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.configsource.aspx
答案 1 :(得分:0)
您可以使用以下代码行获取连接字符串 -
using System;
using System.Configuration;
var connectionString=ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
答案 2 :(得分:0)
这是一个老问题,但在搜索之前它仍然出现: F# Type Provider for SQL in a class
在F#Data Access中,添加如下函数
let getDbContext connString =
match connString with
| "" -> Sql.GetDataContext()
| _ -> Sql.GetDataContext(connString)
然后在C#代码中,您可以调用getDbContext并在运行时从 web.config 传递连接字符串。
请注意,F#数据访问层仍然需要以提供连接字符串,以便编译器完成它的工作。