Maison > base de données > tutoriel mysql > Comment récupérer les résultats d'une requête SQL anonyme à l'aide d'Entity Framework ?

Comment récupérer les résultats d'une requête SQL anonyme à l'aide d'Entity Framework ?

Barbara Streisand
Libérer: 2024-12-30 02:36:24
original
643 Les gens l'ont consulté

How to Retrieve Anonymous SQL Query Results Using Entity Framework?

Récupération des résultats de requêtes SQL anonymes dans Entity Framework

Entity Framework fournit l'outil SqlQuery méthode pour exécuter du SQL brut et mapper les résultats à des entités spécifiques. Cependant, pour récupérer des résultats anonymes, une approche différente est nécessaire.

Une solution consiste à utiliser la méthode brute SqlConnection et ExecuteReader pour récupérer les données et créer manuellement des objets anonymes basés sur l'ensemble de résultats. Voici une méthode d'extension personnalisée qui peut être utilisée :

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;
            }
        }
    }
}
Copier après la connexion

Avec cette méthode, vous pouvez récupérer des résultats anonymes à partir de requêtes SQL comme suit :

List<dynamic> results = DynamicListFromSql(myDb, "select * from table where a=@a and b=@b", new Dictionary<string, object> { { "a", true }, { "b", false } }).ToList();
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal