[英]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種選擇:
將數據庫附加到SSMS中,然后將其刪除
通過搜索.MDF
文件,然后從VS中刪除數據庫,在VS2015 Server Explorer中.MDF
數據庫。
通過服務器資源管理器添加數據庫
按下以在SQL Server對象資源管理器中瀏覽
出現在我可以按Delete鍵的Server Object Explorer中
只需刪除.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.