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 ?
Récupération des résultats de requêtes SQL anonymes dans Entity Framework
Entity Framework fournit l'outil SqlQuery
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; } } } }
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();
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!