Maison >base de données >tutoriel mysql >Comment extraire les résultats de type anonyme des requêtes SQL à l'aide d'Entity Framework ?
Extraction de résultats de type anonyme à partir de requêtes SQL dans Entity Framework
Dans Entity Framework, l'outil SqlQuery
Pour surmonter cette limitation et obtenir des résultats de type anonyme, la solution réside dans l'exploitation directe du SQL brut. La méthode fournie, DynamicListFromSql, permet aux développeurs d'obtenir cette fonctionnalité.
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; } } } }
Cette méthode permet aux développeurs d'exécuter des requêtes SQL et de récupérer les résultats sous la forme d'objets dynamiques, qui sont stockés sous forme de paires clé-valeur dans un Instance ExpandoObject.
Pour utiliser cette méthode dans votre propre code, appelez-la simplement 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();
En utilisant ceci Cette approche permet aux développeurs d'obtenir facilement des résultats de type anonyme à partir de requêtes SQL, facilitant ainsi la récupération de colonnes spécifiques ou la création de structures de données personnalisées basées sur les résultats de la requête.
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!