将存储过程结果映射到对象内部的对象

Map Stored procedure result to object inside an object

如果我有一个人 class 有狗 class 属性 :

public class Person{
 public string Name {get;set;}
 public Dog Doggie {get;set;}
}

在单个 SP 调用中,我想同时填充狗对象和人对象,但我不知道该怎么做。

CREATE PROCEDURE Test
 AS
BEGIN
    SET NOCOUNT ON;

    -- Insert statements for procedure here
      SELECT 
        Name                = p.Person_Name,
        Doggie.Name (This fails) = d.Dog_Name

      FROM My fancy join......
END
GO



  public Person GetByUid(Guid uid)
    {
        Person personToReturn;

        using (var connection = this.connectionFactory.GetOpenConnection())
        {
            try
            {
                personToReturn= connection.Query<Person>("ProcedureName",
                    new {  personUid = uid },
                    commandType: CommandType.StoredProcedure).Single();
            }
            catch ()
            {
                return null;
            }

        }

    return personToReturn;
}

可能吗?

使用 QueryMultiple,并在一个存储过程中写入 2 SELECT 个语句。

这里有一些帮助链接。

Dapper.NET and stored proc with multiple result sets

Multiple SQL statements in one roundtrip using Dapper.NET