2017-02-27 35 views
0

我已經使用實體框架使用下面的連接字符串使用代碼優先的方法創建了一個簡單的上下文。一切順利,運行測試方法後,我發現自己的文件爲.mdf.ldf刪除舊的實體框架生成的數據庫後創建新的數據庫

"data source=.\SQLEXPRESS;Integrated Security=SSPI;database=testdb;AttachDBFilename=Q:\Temp\testdb.mdf;User Instance=true" 

由於某種原因,我想刪除這個數據庫。我試圖在SSMS中查找數據庫,但我找不到它。它沒有在我的數據庫下注冊。現在我覺得我有3種選擇:

  1. 連接SSMS中的數據庫,然後通過搜索.MDF文件,然後從VS刪除數據庫中刪除

  2. 連接到VS2015服務器資源管理器數據庫。通過服務器資源管理器

    enter image description here

    添加數據庫在SQL Server對象資源管理器

    enter image description here

    出現在服務器對象資源管理器,我可以按刪除瀏覽

    enter image description here

  3. 只刪除.mdf.ldf文件

所有這三種方法去除.mdf.ldf文件。

但是:當我再次啓動上下文時,我期望它從頭開始重新創建文件。但我收到以下錯誤:

An exception occurred while initializing the database. See the InnerException for details.

The underlying provider failed on Open.
Cannot open database "testdb" requested by the login.

The login failed.
Login failed for user 'DESKTOP-XXXXXXX\XXXXX'.

我覺得我已經刪除了每個對此數據庫的引用。我找不到任何其他參考。然而不知何故,似乎有一個,因爲它試圖登錄,而不是創建一個新的數據庫。

問題:有誰知道如何解決這個問題?我該如何正確刪除數據庫+參考?

UPDATE

在VS打開的連接刪除我看到下面的連接字符串的文件在我的測試過程中。

Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=Q:\Temp\testdb.mdf;Integrated Security=True;Connect Timeout=30 

但是,當在VS2015中瀏覽我的Localdb時,沒有列出任何數據庫。

+0

現在已列出2個不同的連接字符串。你在使用哪一個? 。\ SQLEXPRESS或localdb? –

+0

我正在使用。\ SQLEXPRESS進行初始化。當使用數據庫的連接時,我注意到連接字符串是localdb。 – XWIKO

+0

當你說連接數據庫並刪除它時,你是連接到。\ SQLEXPRESS並刪除數據庫? –

回答

0

你可以嘗試用Db初始化策略CreateDatabaseIfNotExists顯式初始化你的Db。沿着...的方向

public class YourDBContext: DbContext 
{ 

     public YourDBContext(): base("YourDBContextConnStr") 
     { 
      Database.SetInitializer<YourDBContext>(new CreateDatabaseIfNotExists<YourDBContext>()); 

     } 
} 

乾杯

+0

我已經添加了初始化策略。錯誤仍然存​​在。 – XWIKO

0

正由我初始化使用的事實觸發 「\ SQLEXPRESS」 和EF改成了 「(的LocalDB)\ MSSQLLocalDB」 我已經改變了的ConnectionString。

"data source=(LocalDB)\MSSQLLocalDB;Integrated Security=SSPI;database=testdb;AttachDBFilename=Q:\Temp\testdb.mdf"); 

Et瞧。在我的連接字符串中使用SQL Express LocalDB作爲數據源,我現在可以無憂無慮地刪除和重新創建數據庫。更多的數據庫現在正確地顯示在我的SQL Server對象資源管理器下的LocalDb(而不是根本不顯示任何地方)。

我仍然不知道它爲什麼最初可以用「。\ SQLEXPRESS」連接字符串創建,但不能重新創建。就好像它隱藏了.mdf數據庫存在的信息,並且總是試圖重新連接它。

相關問題