2015-10-23 38 views
1

我建立一個補丁的應用程序,修改現有的MS SQL數據庫。有用戶在補丁中經過多個步驟,但不進行任何更改,直到結束。如何重命名數據庫和文件的實體框架

程序使用實體框架,以便讀取和寫入數據到數據庫中,我收集在一個事務中的所有更改,這樣我可以回滾任何時候。

但是,現在我需要能夠重命名SQL Server(及其文件)上的數據庫......這是否可以通過實體框架實現,以便與其他操作包含在同一事務中?如果是,如何?一旦數據庫被重新命名,連接會被中斷嗎?

+0

dbup:https://dbup.github.io/ –

回答

2

EF是無法做到這一點。使用SMO,它具有Database.Rename方法,它是更合適的工具,數據庫架構的工作:

Server srv = new Server(conn); 
Database database = srv.Databases["AdventureWorks"]; 
database.Rename("newName"); 
+0

將這種行動殺死EF-交易的連接? –

+1

一般來說,你將無法直到存在的任何活動連接進行重命名。即使你執行'ALTER DATABASE'聲明,您將收到「數據庫無法獨佔鎖定來執行操作」,如果數據庫正在使用中的錯誤。所以,只需在重命名之前提交事務,並確保EF連接已關閉。 –