>데이터 베이스 >MySQL 튜토리얼 >Entity Framework의 원시 SQL 쿼리에서 익명 형식 결과를 검색하는 방법은 무엇입니까?

Entity Framework의 원시 SQL 쿼리에서 익명 형식 결과를 검색하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-03 00:52:39549검색

How to Retrieve Anonymous Type Results from Raw SQL Queries in Entity Framework?

Entity Framework SQL 쿼리의 익명 형식 결과

EF(Entity Framework)로 작업할 때 원시 SQL 쿼리를 실행하고 익명 형식 결과를 검색해야 할 수도 있습니다. EF의 SqlQuery 방법을 사용하면 알려진 유형의 엔터티를 쿼리할 수 있으므로 익명 결과를 얻으려면 다른 접근 방식이 필요합니다.

문제 설명

Student 테이블에서 FirstName 열만 검색하는 다음 SQL 쿼리가 있다고 가정합니다.

select FirstName from student

SqlQuery를 사용하면 다음 코드는 알려진 유형을 예상한 대로 작동하지 않습니다. 학생:

var students = Context.Database.SqlQuery<Student>($"select FirstName from student").ToList();

익명 유형 솔루션

원시 SQL 쿼리에서 익명 유형 결과를 얻으려면 다음 방법을 사용할 수 있습니다.

public static IEnumerable<dynamic> DynamicListFromSql(this DbContext db, string Sql, Dictionary<string, object> Params)
{
    using (var cmd = db.Database.Connection.CreateCommand())
    {
        ...
        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;
            }
        }
    }
}

이 방법은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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