我正在使用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名称列表?
答案 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是基于文件的,你可以在你想要的时候保存它。