使用Dapper将存储过程中的字段映射到具有不同名称的类属性

时间:2013-12-19 14:31:20

标签: sql-server stored-procedures dapper

我从POCO课程中发挥了很多领域的作用:

public class Call
{
    public int Id { get; set; }
    public string Customer { get; set; }
    public int StatusId { get; set; }
    public int UserAssignedToId { get; set; }
    public string UserAssignedToName { get; set; }
}

但是我的存储过程会向上面的属性返回不同的名称(在这种情况下,Id在之前:

  • IdCall
  • IDSTATUS
  • IdUserAssignedTo

这是我用来执行存储过程的代码:

var call = conn.Query<Call>("CallSPName", new { IdCall = callId }, commandType: CommandType.StoredProcedure).First();

我如何指定一个映射来表示我想从我的存储过程映射中将“IdStatus”改为我的POCO类中的“StatusId”,将“IdCall”改为“CallId”等?

我没有权限更改存储过程,因为它们由DBA控制,而较旧的旧系统正在使用它们,如果存储过程中的字段发生更改,它们将会中断。

赞赏任何想法/想法。

1 个答案:

答案 0 :(得分:1)

最让我想到的是将私有属性映射到存储过程返回的列,并使用您想要设置的名称创建公共属性并获取这些私有字段:

// ...
private int IdStatus;
public int StatusId {
    get { return IdStatus; }
    set { IdStatus = value; }
}
// ...