2016-08-11 62 views
2

我正在使用實體框架與SQL Server LocalDb作爲我的應用程序的存儲介質。我需要找到一種在具有相同SQL結構的不同數據庫之間切換的方法。如何檢索SQL Server LocalDb名稱的列表?

我的想法是從的DbContext做到這一點:

public const bool RecreateDB = false; 

public UnifiedContext() : this(RecreateDB) { } 
public UnifiedContext(bool recreateDb):this(recreateDb, "DemoDB") { } 

public UnifiedContext(bool recreateDB, string dbName) : base($"MyUniquePrefix.{dbName}") 
{ 
    if (recreateDB) 
     Database.SetInitializer(new DropCreateDatabaseAlways<UnifiedContext>()); 
    else 
     Database.SetInitializer(new MigrateDatabaseToLatestVersion<UnifiedContext, UnifiedConfiguration>()); 
} 

這工作得很好,就像我想它。然而,我現在需要顯示一個LocalDbs的列表加載我知道我可以得到一個SQL數據庫的列表System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources();但這不適用於LocalDbs。

如何檢索LocalDb名稱列表?

回答

0

由於LocalDb適用於開發人員而不適用於數據庫管理員,因此數據庫存儲在一個文件夾中。

通常這個文件夾是

C:\用戶\用戶\應用程序數據\本地\微軟\ Microsoft SQL Server的本地 DB \實例\ MSSQLLocalDB

每個文件與密度纖維板是結束一個數據庫。

不幸的是, - afaik-沒有內置的機制來爭取他們,因爲localDb是基於文件的,並且您可以將其保存爲想要的。

+0

優秀感謝...看來我的文件只是被存儲在'C:\ Users \用戶名\'文件夾;但是這使我走上了正確的道路。 –

1

您可以連接到主數據庫,並運行:

SELECT name FROM sys.databases