2013-08-28 88 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#數據訪問層仍然需要來提供連接字符串,供編譯器執行。

相關問題