首頁 > 資料庫 > mysql教程 > 如何使用實體框架從 SQL 查詢中取得匿名結果?

如何使用實體框架從 SQL 查詢中取得匿名結果?

Mary-Kate Olsen
發布: 2024-12-30 13:34:09
原創
767 人瀏覽過

How Can I Get Anonymous Results from SQL Queries Using Entity Framework?

從實體框架中的SQL 查詢取得匿名結果

在實體框架中,SqlQuery方法可讓您執行原始SQL 查詢並將結果對應到指定類型的物件。然而,它僅限於已知類型。對於匿名結果,您需要更靈活的方法。

使用原始 SQL

要擷取匿名結果,您可以使用原始 SQL 和動態類型。這是實現此目的的方法:

public static IEnumerable<dynamic> DynamicListFromSql(this DbContext db, string Sql, Dictionary<string, object> Params)
{
    using (var cmd = db.Database.Connection.CreateCommand())
    {
        cmd.CommandText = Sql;
        if (cmd.Connection.State != ConnectionState.Open) { cmd.Connection.Open(); }

        foreach (KeyValuePair<string, object> p in Params)
        {
            DbParameter dbParameter = cmd.CreateParameter();
            dbParameter.ParameterName = p.Key;
            dbParameter.Value = p.Value;
            cmd.Parameters.Add(dbParameter);
        }

        using (var dataReader = cmd.ExecuteReader())
        {
            while (dataReader.Read())
            {
                var row = new ExpandoObject() as IDictionary<string, object>;
                for (var fieldCount = 0; fieldCount < dataReader.FieldCount; fieldCount++)
                {
                    row.Add(dataReader.GetName(fieldCount), dataReader[fieldCount]);
                }
                yield return row;
            }
        }
    }
}
登入後複製

用法:

要使用此方法,您可以如下呼叫它:

List<dynamic> results = DynamicListFromSql(myDb, "select * from table where a=@a and b=@b", new Dictionary<string, object> { { "a", true }, { "b", false } }).ToList();
登入後複製

這將傳回包含SQL 查詢結果的匿名物件清單。每個物件都將具有與結果集中的列相對應的屬性。

以上是如何使用實體框架從 SQL 查詢中取得匿名結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板