Heim >Datenbank >MySQL-Tutorial >Wie kann ich mit Entity Framework anonyme Ergebnisse aus SQL-Abfragen erhalten?
Anonyme Ergebnisse aus SQL-Abfragen in Entity Framework abrufen
In Entity Framework ist die SqlQuery
Verwendung von Raw SQL
Um anonyme Ergebnisse abzurufen, können Sie Raw SQL und dynamische Typen verwenden. Hier ist eine Methode, die dies erreicht:
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; } } } }
Verwendung:
Um diese Methode zu verwenden, können Sie sie wie folgt aufrufen:
List<dynamic> results = DynamicListFromSql(myDb, "select * from table where a=@a and b=@b", new Dictionary<string, object> { { "a", true }, { "b", false } }).ToList();
Dadurch wird eine Liste anonymer Objekte zurückgegeben, die die Ergebnisse der SQL-Abfrage enthalten. Jedes Objekt verfügt über Eigenschaften, die den Spalten im Ergebnissatz entsprechen.
Das obige ist der detaillierte Inhalt vonWie kann ich mit Entity Framework anonyme Ergebnisse aus SQL-Abfragen erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!