2016-09-07 80 views
-2

我正在將應用程序的UI側移至新的ASP.NET Core MVC結構。不幸的是,我仍然需要引用在前一代ASP.NET框架中構建的數據層。該數據.dll具有適當的連接字符串到各種數據庫,都由ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString管理,這要求我模仿UI層以便實際獲取數據。具有單獨數據的ASP.NET核心UI應用程序.dll

現在,使用ASP.NET Core MVC,用於配置的web.config已被替換爲appsettings.json文件。

由於我無法在UI應用程序中複製連接字符串,因此這種範式轉換打破了我對數據的所有訪問。

是否有一個合適的解決方案,可以使此數據層.dll更獨立,並依賴於自己的內部定義的連接字符串,同時仍然將方法暴露給「包含」應用程序 - 在這種情況下,UI層?

回答

0

我已經解決了我的一個變通的問題,它會爲現在要做的。最終,我想找到一個更好的選擇,但我正在向前邁進,這讓我的老闆感到開心。

我最終改變我的方法簽名來接受一個字符串值,該字符串值表示由於轉換爲Core MVC而不再處於調用項目中的連接字符串。

在被調用的.dll中,代碼現在會查看是否存在傳入參數的值,如果是,則使用傳遞的值初始化SqlConnection。如果沒有提供參數,它將使用ConfigurationManager功能查找web.config中的配置部分。

這將允許現有項目使用代碼以及新的Core MVC項目。這有點誇張,但功能。

1

實際上,您確實已從新的.json文件引用了您的連接字符串。你會做這樣的事情:

var builder = new ConfigurationBuilder(); 
builder.AddInMemoryCollection(); 
var config = builder.Build(); 
config["somekey"] = "somevalue"; 

// do some other work 

var setting = config["somekey"]; // also returns "somevalue" 

這裏是一個鏈接:docs.asp.net

+0

是的,我在文檔中看到,我想試試 - 希望在舊的語法和新的語法之間會有一個「automagic」轉換。不幸的是,沒有這樣的幸運......數據層.dll仍然在尋找舊的ConfigurationManager的東西。 – rcastagna

+0

您有權訪問.dll的源代碼嗎?我的想法是,.dll項目應該包含一個app.config文件。那麼當你在其他項目中使用它時,它會在其配置文件中查找相同的設置。那麼,如果新項目沒有使用配置文件進行設置,那並不意味着你不能添加一個配置文件(app.config或web.config),這可能會滿足這個需求。 DLL。試試吧......讓我知道你的結果。 –

相關問題