Abrufen anonymer SQL-Abfrageergebnisse in Entity Framework
Entity Framework stellt die SqlQuery
Eine Lösung besteht darin, die rohen SqlConnection- und ExecuteReader-Methoden zu verwenden, um die Daten abzurufen und manuell anonyme Objekte basierend auf dem Ergebnissatz zu erstellen. Hier ist eine benutzerdefinierte Erweiterungsmethode, die verwendet werden kann:
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; } } } }
Mit dieser Methode können Sie anonyme Ergebnisse aus SQL-Abfragen wie folgt abrufen:
List<dynamic> results = DynamicListFromSql(myDb, "select * from table where a=@a and b=@b", new Dictionary<string, object> { { "a", true }, { "b", false } }).ToList();
Das obige ist der detaillierte Inhalt vonWie rufe ich anonyme SQL-Abfrageergebnisse mit Entity Framework ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!