使用Dapper将查询转换为主详细信息类(使用Dapper在多个类中转换连接查询的结果)

时间:2013-11-08 12:19:24

标签: c# sql-server visual-studio-2012 sql-server-2012 dapper

我使用VS2012SQL Server 2012,我在项目中使用Dapper

我在SQL服务器中有两个主要详细信息的表。

我从每个表中都有两个域类。

我想执行一个这样的查询:

SELECT  *
FROM dbo.ATest
LEFT JOIN dbo.BTable ON dbo.ATest.Id = dbo.BTable.IdA

然后将该地图结果发给我的班级。

我的域类是这样的:

    public class BTable
    {
        public int Id { get; set; }
        public string NameB { get; set; }
        public string Tel { get; set; }
        public ATest ATest { get; set; }
    }

    public class ATest
    {
        public SexEnum Sex { get; set; }
        public int Id { get; set; }
        public string Name { get; set; }
        public IList<BTable> BTable { get; set; }
    }

    public enum SexEnum
    {
        Mard = 0, Zan = 1
    }

我用过这一行

        const string connectionStr = @"Server=PCClient;
                                      Database=Dapper;User Id=sa;Password=sa;";
        SqlConnection sqlConn = new SqlConnection(connectionStr);
        sqlConn.Open();

        string command = @"SELECT  ATest.*,Split='',BTable.*
                           FROM dbo.ATest
                           LEFT JOIN dbo.BTable ON dbo.ATest.Id = dbo.BTable.IdA";

        var testList = Dapper.SqlMapper.Query<ATest, BTable, Tuple<ATest, BTable>>(
                             sqlConn, command,
                             (aTest, bTable) => 
                             Tuple.Create(aTest, bTable), splitOn: "Split").ToList();

但它不能正常工作,因为在这种情况下,我有一个匿名列表,有两个列表被激怒。

然后我用这个:

 string command = @"SELECT  ATest.*,BTable.*
                       FROM dbo.ATest
                          LEFT JOIN dbo.BTable ON dbo.ATest.Id = dbo.BTable.IdA";

 List<BTable> testList = Dapper.SqlMapper.Query<BTable, ATest, BTable>(sqlConn, command,
                                                   (bTable, aTest) => { bTable.ATest = aTest;
                                                                       return bTable;
                                                        }).ToList();

在这种状态下我有一个bTable列表,每行有一个Atest对象。

但是我需要一个Ilist的对象,它有一个BTable列表。

如何使用dapper转换一个已加入多个类的Query的结果?

0 个答案:

没有答案