Dapper 处理返回空结果集

发布于 2024-11-27 04:09:20 字数 404 浏览 1 评论 0原文

我们正在使用 Dapper 来映射我们的 sql 数据,到目前为止它运行得很好。我有一个案例,我们正在做类似的事情:

someObject = con.Query<T>("GetInfoSproc", p, commandType: CommandType.StoredProcedure).Single();

只要我调用的存储过程返回数据,这就很好。有时,存储过程可能不会返回结果并在输出参数中返回错误。 这似乎会在 Dapper 中引起问题,因为 dapper 会抛出错误:

“当使用多重映射 API 时,如果您有 Id 以外的键,请确保设置 splitOn 参数”

有没有办法编写查询,以便它可以正确处理返回空结果的情况,或者这是 Dapper 的限制吗?

We are using Dapper to map our sql data and so far it has worked very well. I have a case though where we are doing something similar to:

someObject = con.Query<T>("GetInfoSproc", p, commandType: CommandType.StoredProcedure).Single();

This works great as long as the stored procedure I'm calling returns data. There are times where the stored procedure might not return a result and return an error in a out parameter.
This seems to cause a problem in Dapper because dapper throws the error:

"When using the multi-mapping APIs ensure you set the splitOn param if you have keys other than Id"

Is there a way to write the query so it can properly handle the case when an empty result is returned or is this a limitation of Dapper?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

超可爱的懒熊 2024-12-04 04:09:20

SingleOrDefault() 是你的朋友,

试试这个:

someObject = con.Query<T>("GetInfoSproc", p, commandType: CommandType.StoredProcedure).SingleOrDefault();
if (someObject != null)
{
  // operate on your results here
}
return someObject;

你还需要确保 TNullable

SingleOrDefault() is your friend here

Try this:

someObject = con.Query<T>("GetInfoSproc", p, commandType: CommandType.StoredProcedure).SingleOrDefault();
if (someObject != null)
{
  // operate on your results here
}
return someObject;

also you'll need to make sure T is Nullable

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文