2013-08-28 47 views
1

我有3层结构DataAccessLayer,BusinessLogicLayer和网站项目。网站未从web.config获取连接字符串。它正在搜索的app.config

在我DataAccessLayer我已经使用F#库项目,ConnectionString的从app.config文件访问

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中

+0

你的app.config是你的“DataAccessLayer”项目是什么呢? – samar

+0

F#项目运行在它自己的进程中吗?如果一切从IIS运行,它应该从web.config读取。你肯定你有' oleksii

+0

是这部分在web.config中 – user1696632

回答

0

您可以通过下面的代码行提取连接字符串 -

using System; 
using System.Configuration; 

var connectionString=ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString; 

这里是一个参考: Connection String from App.config

0

这是一个老问题,但是这一次在搜索前,它仍然出现: F# Type Provider for SQL in a class

在您的F#数据访问,加入这样的函数

let getDbContext connString = 
    match connString with 
    | "" -> Sql.GetDataContext() 
    | _ -> Sql.GetDataContext(connString) 

然后在C#代码,你可以调用getDbContext并在运行时从web.config中在连接字符串中传递。

请注意,F#数据访问层仍然需要来提供连接字符串,供编译器执行。

相关问题