.FromSqlRaw 의 결과가 동적입니다.
sn : result1 : result2 : result3 : result4 : result5 :
result1 결과가 몇개가 될지 모릅니다.
그래서 맵핑하는 클래스에 string sn과 List<int> result 를 만들었는데 맵핑이 잘안되네요.
int numberOfResults = 5; // 생성할 서브쿼리 개수
StringBuilder sqlBuilder = new StringBuilder();
for (int i = 1; i <= numberOfResults; i++)
{
    sqlBuilder.AppendLine($"(SELECT Result FROM Inspects WHERE ProbeSNId = main.ProbeSNId AND InspectTypeId = {i} AND DataFlag = 1) AS {i},");
}
// 마지막 줄에는 쉼표를 제거
sqlBuilder.Remove(sqlBuilder.Length - 3, 1);
string sql = @"
            SELECT CONCAT(pt.Code, pst.DateTime, LPAD(pst.PcNo, 3, '0'), LPAD(ps.ProbeSeqNo,5,'0')) AS ProbeSN,
                   {sqlBuilder}
            FROM (SELECT DISTINCT ProbeSNId FROM Inspects) AS main
            JOIN ProbeSNs ps ON main.ProbeSNId = ps.Id
            JOIN ProbeSNTypes pst ON ps.ProbeSNTypeId = pst.Id
            JOIN ProbeTypes pt ON ps.ProbeTypeId = pt.Id";
List<ProbeSNView> probeSNViews = db.ProbeSNViews
    .FromSqlRaw(sql)
    .AsEnumerable()
    .Select(x => new ProbeSNView
    {
        ProbeSN = x.ProbeSN,
        Result = GetDynamicResults(x).ToList(),
    })
    .ToList();
private static List<int> GetDynamicResults(dynamic x)
{
    var results = new List<int>();
    for (int i = 1; i <= 5; i++)
    {
        var result = x[i] as int?;
        if (result.HasValue)
        {
            results.Add(result.Value);
        }
    }
    return results;
}
//[NotMapped]
public class ProbeSNView
{
    //[Key]
    public required string ProbeSN { get; set; }
    public IEnumerable<int>? Result { get; set; }
}
이렇게 해봤습니다.
어떻게 맵핑 하면 좋을까요?
https://github.com/jys923/ProcessAutomation.git
        
        
                    
                    
                    
                    
                    
    
                    
                    
                    
                    
                    
                
                    [최초 등록일: ]
                    [최종 수정일: 2/22/2024]