如何检索SQL Server LocalDb名称列表?

时间:2016-08-11 20:58:02

标签: c# sql-server entity-framework localdb

我正在使用Entity Framework和SQL Server LocalDb作为我的应用程序的存储介质。我需要找到一种在具有相同SQL结构的不同数据库之间切换的方法。

我的想法是从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列表以便加载我知道我可以获得一个带有System.Data.Sql.SqlDataSourceEnumerator.Instance.GetDataSources();的SQL数据库列表,但这对于LocalDbs不起作用。

如何检索LocalDb名称列表?

2 个答案:

答案 0 :(得分:2)

您可以连接到master数据库,然后运行:

SELECT name FROM sys.databases

答案 1 :(得分:0)

由于LocalDb适用于开发人员而非数据库管理员,因此数据库存储在一个文件夹中。

通常这个文件夹是

  

C:\ Users \ User \ AppData \ Local \ Microsoft \ Microsoft SQL Server Local   DB \实例\ MSSQLLocalDB

以.mdf结尾的每个文件都是一个数据库。

不幸的是,afaik-没有内置机制来招募它们,因为localDb是基于文件的,你可以在想要的时候保存它。

相关问题