使用OrmLite使用可选参数调用存储过程

时间:2013-03-18 20:26:56

标签: servicestack ormlite-servicestack

我使用OrmLite来调用具有可选参数的存储过程。

_dbConnection.SqlList<CustomerDTO>("sp_getcustomers @name", new { name = request.Name });

此语句生成带有@name作为参数的动态sql语句。但我不知道如何将null传递给这个参数,我尝试使用DBNull.Value但它不起作用。 例外:字典中没有出现给定的密钥

_dbConnection.SqlList<CustomerDTO>("sp_getcustomers @name", new { name = request.Name ??  System.Data.SqlTypes.SqlString.Null});

3 个答案:

答案 0 :(得分:3)

有关如何有效使用OrmLite Sql* apis的示例,请参阅这些SqlProviderTests

调用它的正确方法是:

Db.SqlList<CustomerDTO>("EXEC sp_getcustomers @Name", new { request.Name });

答案 1 :(得分:2)

Ormlite有一个T4 file来为SP生成C#函数等价物(对于SqlServer);生成的文件允许您传递空值。

答案 2 :(得分:1)

commit e6ef83a中添加了对存储过程中的空参数的支持,并与ServiceStack.OrmLite的version 3.9.56一起发布。