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

C# 如何检索SQL Server LocalDb名称列表?,c#,sql-server,entity-framework,localdb,C#,Sql Server,Entity Framework,Localdb,我使用实体框架和SQLServerLocalDB作为应用程序的存储介质。我需要找到一种方法在具有相同SQL结构的不同数据库之间切换 我的想法是从DbContext执行此操作: public const bool RecreateDB = false; public UnifiedContext() : this(RecreateDB) { } public UnifiedContext(bool recreateDb):this(recreateDb, "DemoDB") { } publi

我使用实体框架和SQLServerLocalDB作为应用程序的存储介质。我需要找到一种方法在具有相同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>());
}
public const bool RecreateDB=false;
public UnifiedContext():此(重新创建数据库){}
public UnifiedContext(bool recreateddb):this(recreateDb,“demodab”){
public UnifiedContext(bool recreateddb,string dbName):base($“MyUniquePrefix.{dbName}”)
{
如果(重新创建数据库)
SetInitializer(新的DropCreateDatabaseAlways());
其他的
SetInitializer(新的MigrateDatabaseToLatestVersion());
}
这很好,就像我想要的那样。但是我现在需要显示一个LocalDbs列表以便加载,我知道我可以使用
System.Data.SQL.SqlDataSourceEnumerator.Instance.GetDataSources()获得一个SQL数据库列表但这对LocalDbs不起作用


如何检索LocalDb名称列表?

由于LocalDb是为开发人员而不是为数据库管理员提供的,因此数据库存储在一个文件夹中

通常这个文件夹是

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

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


不幸的是,-afaik-没有内置的机制来登记它们,因为localDb是基于文件的,您可以将其保存到您想要的任何地方。

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

SELECT name FROM sys.databases

非常感谢。。。似乎我的文件正存储在'C:\Users\username'文件夹中;但这让我走上了正确的道路。