我正在开发一个Web api,使用Dapper处理我的SQL调用。首先,我有以下两种模型:
模型1-该模型还具有一个以“模型2”形式关联的子模型
public int COBID { get; set; }
public string ReportingPoint { get; set; }
public string Issuer { get; set; }
public string Group { get; set; }
public string ACCode { get; set; }
public string SourceSystemTradeID { get; set; }
public char SWWR { get; set; }
public string Error { get; set; }
public Model 2 TradeComment { get; set; }
模型2
public int TradeCommentId { get; set; }
public string SourceSystemTradeID { get; set; }
public string SanctionerComment { get; set; }
public string SignOffBy { get; set; }
public bool CompletedFlag { get; set; }
public bool PreApprovedFlag { get; set; }
public bool GenuineWWRFlag { get; set; }
public DateTime CreatedDate { get; set; }
public string CreatedBy { get; set; }
对于我的Update
功能,我有一个PROC,可以从多个表中提取我需要的所有字段。由于一些问题,我无法显示此过程。但是,此proc的功能很好,因为它已经使用了很长时间了。我正在构建的内容将位于其之上。
最后,对于我的dapper调用,我有以下方法:
public IEnumerable<TradeDetail> GetRecordDetail(string id)
{
using (var dbConnection = Connection)
{
dbConnection.Open();
return dbConnection.Query<TradeDetail, TradeComment, TradeDetail>("wwr.pMyProc",
(detail, comment) =>
{
detail.SourceSystemTradeID = id;
return detail;
}, splitOn: "TradeCommentId", commandType: CommandType.StoredProcedure);
}
}
此方法由我的API调用,如下所示:
[HttpPut]
public IActionResult Put(string key, string values)
{
var record = _wwrRepository.GetRecordDetail(key);
JsonConvert.PopulateObject(values, record);
if (!TryValidateModel(record))
{
return BadRequest(ModelState.GetFullErrorMessage());
}
return Ok(record);
}
当我测试我的代码时,它告诉我一个ID值是必须的,并且必须将其传递给我。我以为我已经在下面的行中这样做了:
detail.SourceSystemTradeID = id;
从我的API收集我的ID并将其传递给此方法的地方。
有人可以帮助我正确设置我的代码调用格式吗?
答案 0 :(得分:1)
期望您的PROC是ID,而不是模型中的字段。您需要通过
dbConnection.Open();
return dbConnection.Query<TradeDetail, TradeComment, TradeDetail>("wwr.pMyProc",
(detail, comment) =>
{
detail.TradeComment = comment;
return detail;
},
splitOn: "TradeCommentId",
param: new {id = id },
commandType: CommandType.StoredProcedure);
}
新{id = id} 中匿名 id 的确切名称取决于您存储的proc期望的实际参数名称,还请注意,您需要分配lambda表达式中收到的comment参数发送到TradeDetail实例中的TradeComment字段