Obtention de résultats anonymes à partir de requêtes SQL dans Entity Framework
Dans Entity Framework, l'outil SqlQuery
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!