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
Libérer: 2024-12-30 13:34:09
original
771 Les gens l'ont consulté

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

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

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!

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