簡體   English   中英

如何使用實體框架從 SQL Server 實例中獲取數據庫名稱列表?

[英]How to get a list of database names from a SQL Server instance using 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 及其功能/限制的新手。

您可以簡單地通過 Entity Framework 向您的 SQL Server 發送原始查詢:

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

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

您在 SQL 數據庫中創建視圖

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

然后將此對象添加到 edmx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM