2012-07-13 39 views
3

我有一個C#類庫,我使COM可見,所以我也可以從在Visual Studio 6中編寫的遺留應用程序中調用它。此庫在其中有一個實體框架用於將記錄添加到數據庫。通過COM調用庫可以工作,但記錄不會被添加到數據庫中。我決定調試這個最簡單的方法是將一個C#WinForms測試應用程序添加到庫解決方案中。這是我注意到實體框架也在這裏失敗的地方。事實證明,這是由於庫中的app.config連接字符串也需要成爲測試應用程序的一部分。這很好,這意味着WinForms應用程序能夠正常工作,並且記錄被添加到數據庫中。COM中的ADO.NET實體框架可見的C#類庫

但是,我怎樣才能解決這個問題,通過傳統的應用程序通過COM調用?顯然他們沒有app.config。

+0

將連接字符串硬編碼到適配器中? – 2012-07-13 14:22:34

回答

0

你試過把app.config放在你的COM exe文件附近嗎? 如果這不起作用,那麼你的庫不能使用來自app.config的默認連接字符串。相反,它應該:

  1. 從註冊表或配置文件中手動讀它(?也許ConfigurationManager.OpenExeConfiguration可以做到這一點還是看到這裏http://geekswithblogs.net/akraus1/archive/2006/01/04/64871.aspx標題爲「如何讀/寫另一個App.config文件」關於使用ExeConfigurationFileMap爲例) 。 或
  2. 接受它作爲將從您的COM應用程序傳遞的參數。然後,您的COM應用程序應該從註冊表或某種ini文件中獲取該連接字符串。

無論採用哪種方式,您都必須手動向Entity Framework提供獲取的連接字符串。快速搜索顯示有一個EntityConnection構造函數接受連接字符串作爲參數,也許它適合你。