带类型参数的 PetaPoco 查询

Posted

技术标签:

【中文标题】带类型参数的 PetaPoco 查询【英文标题】:PetaPoco query with typed parameters 【发布时间】:2012-02-07 09:19:48 【问题描述】:

使用 PetaPoco,我如何调用带有类型参数的存储过程? 在 c# 中我这样做:

cmd.Parameters.Add("@email", SqlDbType.NVarChar).Value = email;

【问题讨论】:

【参考方案1】:

查看documentation 了解更多详情,但这里是摘录。

http://www.toptensoftware.com/Articles/114/PetaPoco-What-s-new-in-v4-0

支持 IDbParameters 作为 SQL 参数

PetaPoco 现在支持直接将 IDbParameter 对象传递给 询问。如果 PetaPoco 没有正确映射属性,这很方便。

例如,SQL Server 驱动程序不处理将 DbNull 分配给 VarBinary 列,除非参数配置正确 类型。要解决此问题,您现在可以这样做:

databaseQuery.Execute("insert into temp1 (t) values (@0)", new SqlParameter() SqlDbType = SqlDbType.VarBinary, Value = DbNull.Value );

这样做的一个有趣的副作用是 您还可以从 PetaPoco.IMapper 返回一个 IDbParameter 全局覆盖 PetaPoco 的默认参数映射的接口 功能。

【讨论】:

我刚刚向 PetaPoco (github.com/CollaboratingPlatypus/PetaPoco/pull/272) 添加了一个拉取请求,以纠正在查询中多次使用一个 IDbParameter 时的错误。 PetaPoco 内部将一个参数扩展为多个会导致错误,因为该参数不是值类型。

以上是关于带类型参数的 PetaPoco 查询的主要内容,如果未能解决你的问题,请参考以下文章

防止 PetaPoco 将变量识别为输入参数

PetaPoco 访问SQL SERVER 存储过程

PetaPoco 在带触发器的表上插入失败

PetaPoco 和存储过程的输出参数?

使用 PetaPoco 将表值参数传递给存储过程

PetaPoco模糊查询