>데이터 베이스 >MySQL 튜토리얼 >Entity Framework를 사용하여 SQL 쿼리에서 익명 형식 결과를 추출하는 방법은 무엇입니까?

Entity Framework를 사용하여 SQL 쿼리에서 익명 형식 결과를 추출하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-31 17:26:14268검색

How to Extract Anonymous Type Results from SQL Queries Using Entity Framework?

Entity Framework의 SQL 쿼리에서 익명 유형 결과 추출

Entity Framework에서 SqlQuery 메소드는 원시 SQL 쿼리를 실행하고 지정된 유형 T의 객체로 결과를 반환하는 데 사용됩니다. 그러나 이 메소드를 사용하여 테이블에서 특정 열만 검색하려고 시도하는 경우 개발자는 데이터 판독기와 예상되는 비호환성으로 인해 예외가 발생할 수 있습니다. 객체 유형.

이러한 제한을 극복하고 익명 유형 결과를 얻으려면 원시 SQL을 직접 활용하는 것이 해결책입니다. 제공된 메서드인 DynamicListFromSql을 사용하면 개발자가 이 기능을 구현할 수 있습니다.

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();

활용하여 이 접근 방식을 사용하면 개발자는 쉽게 SQL 쿼리에서 익명 유형 결과를 얻을 수 있으므로 특정 열을 검색하거나 쿼리 결과를 기반으로 사용자 정의 데이터 구조를 쉽게 생성할 수 있습니다.

위 내용은 Entity Framework를 사용하여 SQL 쿼리에서 익명 형식 결과를 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.