【问题标题】:Mapping fields in stored procedure to class properties with different names with Dapper使用 Dapper 将存储过程中的字段映射到具有不同名称的类属性
【发布时间】:2013-12-19 14:31:19
【问题描述】:

我从一个具有许多领域的 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
  • 身份状态
  • IdUserAssignedTo

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

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

我如何指定一个映射来表示我希望我的存储过程映射中的“IdStatus”到我的 POCO 类中的“StatusId”以及“IdCall”到“CallId”等?

我无权更改存储过程,因为它们由 DBA 控制,并且旧的遗留系统正在使用它们,如果存储过程中的字段发生更改,它们会中断。

任何想法/想法表示赞赏。

【问题讨论】:

  • 据我所知,dapper 没有任何映射支持,因此您必须使用 Automapper 或您自己的自定义映射来为您创建自己的映射......或者您可以更改属性以匹配存储过程中的属性?

标签: sql-server stored-procedures dapper


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多