簡體   English   中英

刪除舊的Entity Framework生成的數據庫后創建新的數據庫

[英]Create new database after deleting old Entity Framework generated database

我使用下面的連接字符串使用Entity Framework使用代碼優先方法創建了一個簡單的上下文。 一切順利,運行測試方法后,我發現自己帶有.mdf.ldf文件。

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

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

  1. 將數據庫附加到SSMS中,然后將其刪除

  2. 通過搜索.MDF文件,然后從VS中刪除數據庫,在VS2015 Server Explorer中.MDF數據庫。

    通過服務器資源管理器添加數據庫

    在此處輸入圖片說明

    按下以在SQL Server對象資源管理器中瀏覽

    在此處輸入圖片說明

    出現在我可以按Delete鍵的Server Object Explorer中

    在此處輸入圖片說明

  3. 只需刪除.mdf.ldf文件

所有這三種方法都將刪除.mdf.ldf文件。

但是 :當我再次啟動上下文時,我希望它從頭開始再次創建文件。 但是我得到以下錯誤:

初始化數據庫時發生異常。 有關詳細信息,請參見InnerException。

基礎提供程序在打開時失敗。
無法打開登錄請求的數據庫“ testdb”。

登錄失敗。
用戶“ DESKTOP-XXXXXXX \\ XXXXX”的登錄失敗。

我覺得我已經刪除了對該數據庫的所有引用。 我找不到其他參考。 但是以某種方式出現它是因為它試圖登錄而不是創建新數據庫。

問題:有人知道如何解決此問題嗎? 如何正確刪除數據庫+參考?

更新

在VS中,在測試過程中打開連接,然后刪除文件,然后看到以下連接字符串。

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

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

您是否可以使用Db初始化策略CreateDatabaseIfNotExists嘗試對Db進行顯式初始化。 有點像..

public class YourDBContext: DbContext 
{

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

        }
}

干杯

由於我使用“。\\ SQLEXPRESS”進行了初始化,並且EF將其更改為“(LocalDB)\\ MSSQLLocalDB”,因此我更改了連接字符串。

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

等等。 現在,可以將連接字符串中的SQL Express LocalDB用作數據源,我可以輕松刪除和重新創建數據庫。 現在,更多的數據庫現在可以正確顯示在我的SQL Server對象資源管理器中的LocalDb下(而不是完全不在任何地方顯示)。

我仍然不知道為什么它最初可以使用“。\\ SQLEXPRESS”連接字符串創建但不能重新創建。 好像它在隱藏.mdf數據庫存在的信息,並一直試圖重新連接它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM