Dapper 将多个结果集映射到单个对象

问题描述 投票:0回答:0

我有一个包含其他对象的对象和一个对象列表。在 dapper 中,我能够查询返回 4 个结果集的每个表。我需要将每个结果映射到它们在 C# 中的父类对象。

这是小巧的代码

          var sqlStatement = @"
         Select * from SituationalAssessment;
         Select * from CompanyInformation;
         Select * from LocationInformation;
         Select * from JobInformation;"

          using (var conn = new SqlConnection(_connectionString))
             {
            await conn.OpenAsync();
            var multi = await conn.QueryMultipleAsync(sqlStatemment);
            model = multi.Read<AssessmentModel>().ToList();
            var companyInfo = multi.Read<CompanyInformationModel>().ToList();
            var locationInfo = multi.Read<LocationInformationModel>().ToList();
            var jobInfo = multi.Read<JobInformationModel>().ToList();
             }

这里是父类

  public class AssessmentModel
{
    public Guid AssessmentId { get; set; }
    public string? applicationNumber { get; set; }
    public ApplicationStatus? applicationStatus { get; set; }

    public DateTime? dateCreated { get; set; }
    public DateTime modifiedDateCreated { get; set; }
    public CompanyInformationModel? companyInformationModel { get; set; }
    public List<LocationInformationModel>? locationInformationModels { get; set; }
    public JobInformationModel? jobInformationModel { get; set; }
}

public class CompanyInformationModel
    {
        public Guid CompanyInformationId { get; set; }
        public string? companyName { get; set; }
        public string? contactName { get; set; }
        public string? primaryPhone { get; set; }
        public string? secondaryPhone { get; set; }
        public string? email { get; set; }
        public string? hourlyRate { get; set; }
    }

    public class LocationInformationModel
    {
        public Guid LocationInformationId { get; set; }
        public string? address1 { get; set; }
        public string? address2 { get; set; }
        public string? city { get; set; }
        public string? state { get; set; }
        public string? zip { get; set; }
    }

    public class JobInformationModel
    {
        public Guid JobInformationId { get; set; }
        public string? jobTitle { get; set; }
        public string? jobDescription { get; set; }
    }

结果集返回每个表中所有内容的列表,它们都与这些 Id 相关

 Select * from SituationalAssessment s
 join CompanyInformation c  on c.CompanyInformationId = s.AssessmentId
 join LocationInformation l  on l.LocationInformationId = s.AssessmentId
 join JobInformation j  on j.JobInformationId = s.AssessmentId

我曾尝试使用 Dapper“SplitOn”,但由于 LocationInformationModel 返回了一个列表。它没有按预期工作

c# list linq dapper
© www.soinside.com 2019 - 2024. All rights reserved.