Heim >Datenbank >MySQL-Tutorial >Wie rufe ich anonyme Typergebnisse aus Entity Framework SQL-Abfragen ab?
Anonyme Typergebnisse aus Entity Framework SQL-Abfragen
Entity Framework ermöglicht die Ausführung von Roh-SQL-Abfragen, beim Abrufversuch tritt jedoch häufig eine Herausforderung auf anonyme Ergebnisse. Die native SqlQuery
Um dies zu umgehen, ist ein benutzerdefinierter Ansatz unter Verwendung der zugrunde liegenden Verbindungsobjekte erforderlich. Der folgende C#-Code bietet eine Lösung:
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; } } } }
Diese Methode benötigt eine SQL-Abfragezeichenfolge sowie ein Wörterbuch mit Parametern. Es erstellt und führt den Befehl mithilfe der zugrunde liegenden Verbindung aus, liest die Ergebnisse und füllt ein ExpandoObject dynamisch mit den Spaltennamen und -werten.
Um diese Methode zu verwenden, rufen Sie sie einfach wie folgt auf:
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 dynamischer anonymer Objekte zurückgegeben, die leicht iteriert und über den Eigenschaftsnamen aufgerufen werden können.
Das obige ist der detaillierte Inhalt vonWie rufe ich anonyme Typergebnisse aus Entity Framework SQL-Abfragen ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!