2012-06-16 59 views
6

我有一個EF代碼第一個網絡應用程序,它工作正常並正確連接到數據庫服務器。我已經爲該解決方案添加了一個控制檯應用程序,以測試將與該應用程序配合使用的服務的邏輯。實體框架控制檯應用程序連接到錯誤的數據庫

控制檯應用程序爲什麼沒有保存數據,因此我把它簡化爲從數據庫中簡單地讀取,結果原始的控制檯應用程序保存了記錄,但是保存到不同的數據庫超過連接字符串中指定的值。

下面是從app.config中的連接字符串:

<add name="DatabaseContext" connectionString="Data Source=xxx.xx.x.xx; Initial Catalog=OKWU_Gateway; User ID=xxxxx; Password=********; Trusted_Connection=False;" providerName="System.Data.SqlClient" /> 
    <add name="DevelopmentEntities" connectionString="metadata=res://*/EntityModel.csdl|res://*/EntityModel.ssdl|res://*/EntityModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=;Data Source=|DataDirectory|\OKWU_Gateway.mdf" providerName="System.Data.EntityClient" /> 

的DatabaseContext是

控制檯應用程序是非常簡單的,但是連接到數據庫上,而不是

Database.SetInitializer<DatabaseContext>(null); 
    static void Main(string[] args) 
    { 
     using (DatabaseContext db = new DatabaseContext()) 
     { 
      var query = from u in db.Users where u.Id == 1 select u; 
      foreach (User u in query) 
      { 
       Console.WriteLine(u.Id + " " + u.FirstName + " " + u.LastName); 
      } 
      Console.ReadLine(); 
     } 
    } 

遠程服務器連接到開發機器上的sqlexpress並打到這個數據庫。

UniversityGateway.Data.DatabaseContext 

我試着改變連接字符串指向| DataDirectory |到SQL連接字符串,並沒有任何區別。連接字符串與web.config中的內容相同,正如我所說的,Web應用程序正常工作。

任何想法,我失蹤或指出我在正確的方向來解決這個問題?

+0

只是檢查...你沒有任何雜亂的資源文件掛在你身邊? –

+1

爲什麼在這個世界上有人會低估這一點,而不會留下評論。 – Brian

+1

你的上下文的構造函數是怎樣的? –

回答

0

經過大量的挖掘,我發現了一個解決方案。不知道它是否是正確的/最好的,但它的工作,所以我可以繼續前進。

由於控制檯應用程序是不尊重在App.config的連接字符串中,我指定用

db.Database.Connection.ConnectionString 

在代碼中的連接仍然覺得我在這裏的東西雖然。

發現我的問題的另一部分是EF Codefirst不能很好地與Sql Server 2005 DateTime數據類型配合使用。

+1

這個問題很可能與您的DbContext類的構造函數有關,所以請按照@Ladislav的評論並將其粘貼到您的問題中。 – kingdango

+0

實際上是因爲ef datetime數據類型與sql 2005 datetime數據類型不同步。如果我們從現有的數據庫生成一個emdx文件,那麼我們可以添加providermanifest標記設置,以使它在2005年可以很好地運行,但首先使用代碼不是一個選項。解決這個問題。 – Brian

相關問題