如何使用Entity Framework从SQL Server实例获取数据库名称列表?

时间:2018-01-24 09:23:40

标签: c# sql-server entity-framework

我想使用Entity Framework(EF)查询SQL Server实例并返回该实例上的数据库名称列表。

我可以使用以下代码执行此操作,但想知道EF是否有办法?

   public static string[] GetDatabaseNames(SqlConnection masterConn)
    {
        List<string> databases = new List<string>();

        //  retrieve the name of all the databases from the sysdatabases table
        using (SqlCommand cmd = new SqlCommand("SELECT [name] FROM sysdatabases", masterConn))
        {
            using (SqlDataReader rdr = cmd.ExecuteReader())
            {
                while (rdr.Read())
                {
                    databases.Add((string)rdr["name"]);
                }
            }
        }

        return databases.ToArray();
    }

我应该提一下,我是EF的新手及其能力/限制。

2 个答案:

答案 0 :(得分:6)

您只需通过Entity Framework将原始查询发送到SQL Server:

using (var context = new MyContext()) 
{ 
    var dbNames = context.Database.SqlQuery<string>(
        "SELECT name FROM master.dbo.sysdatabases").ToList(); 
}

来源:https://msdn.microsoft.com/en-us/library/jj592907(v=vs.113).aspxhttps://stackoverflow.com/a/147662/2699126

答案 1 :(得分:1)

您在SQL数据库中创建视图

CREATE VIEW [dbo].[SysDatabasesView] AS SELECT * FROM sys.databases

然后将此对象添加到edmx