Entity Framework의 SQL 쿼리에서 익명 결과 가져오기
Entity Framework에서 SqlQuery
원시 SQL 사용
익명 결과를 검색하려면 원시 SQL 및 동적 유형을 사용할 수 있습니다. 이를 달성하는 메서드는 다음과 같습니다.
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; } } } }
사용법:
이 메서드를 사용하려면 다음과 같이 호출할 수 있습니다.
List<dynamic> results = DynamicListFromSql(myDb, "select * from table where a=@a and b=@b", new Dictionary<string, object> { { "a", true }, { "b", false } }).ToList();
SQL 쿼리 결과가 포함된 익명 개체 목록이 반환됩니다. 각 개체에는 결과 집합의 열에 해당하는 속성이 있습니다.
위 내용은 Entity Framework를 사용하여 SQL 쿼리에서 익명 결과를 얻으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!