Maison >base de données >tutoriel mysql >Comment récupérer des résultats de type anonyme à partir de requêtes SQL Entity Framework ?
Résultats de type anonyme des requêtes SQL d'Entity Framework
Entity Framework permet d'exécuter des requêtes SQL brutes, mais un défi courant se pose lors de la tentative de récupération résultats anonymes. Le module natif SqlQuery
Pour surmonter ce problème, une approche personnalisée utilisant les objets de connexion sous-jacents est nécessaire. Le code C# suivant fournit une solution :
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 prend une chaîne de requête SQL, ainsi qu'un dictionnaire de paramètres. Il crée et exécute la commande à l'aide de la connexion sous-jacente, lit les résultats et remplit dynamiquement un ExpandoObject avec les noms et valeurs des colonnes.
Pour utiliser cette méthode, appelez-la simplement comme ceci :
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 dynamiques qui peuvent être facilement itérés et accessibles par nom de propriété.
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!