我使用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});
答案 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一起发布。