0

我有一個使用WPF和SQL Server 2008 R2的工作數據庫應用程序,兩年來一直從App.Config文件獲取它的SQL Server連接字符串。幾天前在一臺開發機器上,它開始忽略App.Config文件的connectionString,現在正在使用來自其他地方的字符串(看起來像是settings.settings或DBML文件)。爲什麼我的Visual Studio 10停止對我的SQL連接字符串使用App.Config?

爲什麼會這是發生的事情,我怎麼能得到它停止這樣做?

在app.config開始時是這樣的:

<configuration> 
    <configSections> 
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/> 
    </configSections> 
    <connectionStrings> 
    <add name="DronzApp.Properties.Settings.DronzAppConnectionString" 
    connectionString="Server=dronz.db.123.dronzdbserver.com;Database=dronzdb;User ID=dronz;Password=secretsauce;" 
    providerName="System.Data.SqlClient" /> 
</connectionStrings> 

編輯:感謝來自你們的建議提供更多信息和在哪裏看。我不知道WPF應用程序在App.Config或其他任何地方應該看到的信息的位置,但是直到我知道這裏有更多部分:

我的程序的第一件事情之一正在測試數據庫(現在失敗)。它確實是正確的之前,它調用的自動生成功能的InitializeComponent(),其自動生成的代碼是:

 /// <summary> 
    /// InitializeComponent 
    /// </summary> 
    [System.Diagnostics.DebuggerNonUserCodeAttribute()] 
    public void InitializeComponent() { 
     if (_contentLoaded) { 
      return; 
     } 
     _contentLoaded = true; 
     System.Uri resourceLocater = new System.Uri("/DronzApp;component/ui/startwindow.xaml", System.UriKind.Relative); 

     #line 1 "..\..\..\UI\StartWindow.xaml" 
     System.Windows.Application.LoadComponent(this, resourceLocater); 

     #line default 
     #line hidden 
    } 

我開始窗口構造函數調用的InitializeComponent();然後測試與線路數據庫:

INT HMM = App.db.Dronz_FooTable.Count();

其中App.db處於app.xaml.cs文件所定義的數據上下文:

公共靜態DronzDataDataContext分貝=新DronzDataDataContext();

其中DronzDataDataContext在自動生成的代碼所限定LINQ到SQL如:

公共部分類DronzDataDataContext:System.Data.Linq.DataContext ...

public DronzDataDataContext() : 
      base(global::DronzApp.Properties.Settings.Default.DronzConnectionString, mappingSource) 
    { 
     OnCreated(); 
    } 

哪用於注意app.config文件,現在不用。當我捕獲數據庫異常(這是關於數據庫版本問題,因爲它試圖使用錯誤的SQL服務器)並查看連接字符串時,它向錯誤的SQL Server請求文件而不是正確的連接字符串。它使用的連接字符串似乎與Linq-to = SQL在導入數據庫模式時創建的DBML文件相匹配,或者與settings.settings中的字符串匹配(這是一個文件,我不太明白它來自哪裏或我應該做什麼或不做什麼)。

+1

目前沒有足夠的信息來幫助您找到連接字符串的來源。配置文件可以從應用程序讀取,而不是將數據「推送」到應用程序中。您需要查看代碼才能找到正在創建數據庫連接/命令的位置,以查找從哪裏讀取連接字符串。 – ulty4life 2012-07-05 21:23:43

回答

0

好吧,我似乎已經找到並解決了問題,但我不知道是什麼原因引起的,沒錯。

什麼參考配置文件實際上是在.proj文件,並以某種方式把它改成添加引用在項目的根,而不是在一個應用程序的子文件夾到的app.config。從閱讀其他關於app.config的討論,我認爲VS2010可能會在我查看GUI中的Project設置時自動執行此操作。手動從.proj文件中刪除該行,可以找到並使用指向app.config文件實際位置的以前版本。由於我沒有在新的第一行被編輯的項目根目錄中有一個app.config文件,它說它在.proj文件中,它似乎已經下降到了settings.settings,它找到了connectionString值當我使用Linq to SQL導入數據庫文件的時候。

相關問題