집 >데이터 베이스 >MySQL 튜토리얼 >Entity Framework SQL 쿼리에서 익명 형식 결과를 검색하는 방법은 무엇입니까?
Entity Framework SQL 쿼리의 익명 유형 결과
Entity Framework는 원시 SQL 쿼리 실행을 허용하지만 검색을 시도할 때 일반적인 문제가 발생합니다. 익명의 결과. 기본 SqlQuery
이를 극복하려면 기본 연결 객체를 사용하는 사용자 정의 접근 방식이 필요합니다. 다음 C# 코드는 솔루션을 제공합니다.
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; } } } }
이 메서드는 SQL 쿼리 문자열과 매개변수 사전을 사용합니다. 기본 연결을 사용하여 명령을 생성 및 실행하고, 결과를 읽고, ExpandoObject를 열 이름과 값으로 동적으로 채웁니다.
이 메서드를 사용하려면 다음과 같이 호출하면 됩니다.
List<dynamic> results = DynamicListFromSql(myDb, "select * from table where a=@a and b=@b", new Dictionary<string, object> { { "a", true }, { "b", false } }).ToList();
이렇게 하면 속성 이름으로 쉽게 반복하고 액세스할 수 있는 동적 익명 개체 목록이 반환됩니다.
위 내용은 Entity Framework SQL 쿼리에서 익명 형식 결과를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!