我建立一個補丁的應用程序,修改現有的MS SQL數據庫。有用戶在補丁中經過多個步驟,但不進行任何更改,直到結束。如何重命名數據庫和文件的實體框架
程序使用實體框架,以便讀取和寫入數據到數據庫中,我收集在一個事務中的所有更改,這樣我可以回滾任何時候。
但是,現在我需要能夠重命名SQL Server(及其文件)上的數據庫......這是否可以通過實體框架實現,以便與其他操作包含在同一事務中?如果是,如何?一旦數據庫被重新命名,連接會被中斷嗎?
我建立一個補丁的應用程序,修改現有的MS SQL數據庫。有用戶在補丁中經過多個步驟,但不進行任何更改,直到結束。如何重命名數據庫和文件的實體框架
程序使用實體框架,以便讀取和寫入數據到數據庫中,我收集在一個事務中的所有更改,這樣我可以回滾任何時候。
但是,現在我需要能夠重命名SQL Server(及其文件)上的數據庫......這是否可以通過實體框架實現,以便與其他操作包含在同一事務中?如果是,如何?一旦數據庫被重新命名,連接會被中斷嗎?
EF是無法做到這一點。使用SMO,它具有Database.Rename方法,它是更合適的工具,數據庫架構的工作:
Server srv = new Server(conn);
Database database = srv.Databases["AdventureWorks"];
database.Rename("newName");
將這種行動殺死EF-交易的連接? –
一般來說,你將無法直到存在的任何活動連接進行重命名。即使你執行'ALTER DATABASE'聲明,您將收到「數據庫無法獨佔鎖定來執行操作」,如果數據庫正在使用中的錯誤。所以,只需在重命名之前提交事務,並確保EF連接已關閉。 –
dbup:https://dbup.github.io/ –