Maison >base de données >tutoriel mysql >Comment puis-je obtenir des résultats anonymes à partir de requêtes SQL à l'aide d'Entity Framework ?

Comment puis-je obtenir des résultats anonymes à partir de requêtes SQL à l'aide d'Entity Framework ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-30 13:34:09777parcourir

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

Obtention de résultats anonymes à partir de requêtes SQL dans Entity Framework

Dans Entity Framework, l'outil SqlQuery La méthode vous permet d'exécuter des requêtes SQL brutes et de mapper les résultats sur des objets d'un type spécifié. Cependant, il est limité aux types connus. Pour les résultats anonymes, vous avez besoin d'une approche plus flexible.

Utilisation de SQL brut

Pour récupérer des résultats anonymes, vous pouvez utiliser du SQL brut et des types dynamiques. Voici une méthode qui permet d'y parvenir :

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;
            }
        }
    }
}

Utilisation :

Pour utiliser cette méthode, vous pouvez l'appeler 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();

Cela renverra une liste d'objets anonymes contenant les résultats de la requête SQL. Chaque objet aura des propriétés correspondant aux colonnes du jeu de résultats.

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!

Déclaration:
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