servicestack 使用OrmLite使用可选参数调用存储过程,servicestack,ormlite-servicestack,servicestack,ormlite Servicestack" /> servicestack 使用OrmLite使用可选参数调用存储过程,servicestack,ormlite-servicestack,servicestack,ormlite Servicestack" />

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

servicestack 使用OrmLite使用可选参数调用存储过程,servicestack,ormlite-servicestack,servicestack,ormlite Servicestack,我正在使用OrmLite调用具有可选参数的存储过程 _dbConnection.SqlList<CustomerDTO>("sp_getcustomers @name", new { name = request.Name }); \u dbConnection.SqlList(“sp_getcustomers@name”,new{name=request.name}); 此语句正在生成以@name为参数的动态sql语句。但我不知道如何将null传递给这个参数,我尝试使用DBNu

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

_dbConnection.SqlList<CustomerDTO>("sp_getcustomers @name", new { name = request.Name });
\u dbConnection.SqlList(“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});
\u dbConnection.SqlList(“sp_getcustomers@name”,new{name=request.name??System.Data.SqlTypes.SqlString.Null});
有关如何有效利用OrmLite的
Sql*
API的示例,请参见这些示例

正确的称呼方式是:

Db.SqlList<CustomerDTO>("EXEC sp_getcustomers @Name", new { request.Name });
Db.SqlList(“EXEC sp_getcustomers@Name”,new{request.Name});
有关如何有效利用OrmLite的
Sql*
API的示例,请参见这些示例

正确的称呼方式是:

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

存储过程中对空参数的支持是随ServiceStack.OrmLite的加入和发布的。

存储过程中对空参数的支持是随ServiceStack.OrmLite的加入和发布的。

OrmLite具有为SP(用于SqlServer)生成C函数等价物的功能;生成的文件允许您传递空值。

Ormlite具有为SP(用于SqlServer)生成C#函数等价物的功能;生成的文件允许您传递空值。

对不起,我写的是psuedo代码,已更正。这里的问题是,如果我传递一些值或一个空名称参数,我就能够调用SP。但是我在DB中有检查name=null的逻辑,所以通过使用上述语法,我无法传递null或完全避免传递name参数(在ADO.NET中完成)“必须声明标量变量@name”异常在我尝试传递null时引发。生成的SQL:exec sp_executesql N'exec dbo.sp_getcustomers@name',N'@name nvarchar(20)' . 没有名称参数的声明。使用Dapper生成的sql是exec dbo.sp_getcustomers@name=null,我也遇到了同样的问题。我不知道如何将参数设置为NULL。你有没有找到解决这个问题的方法?我在这里创建了一个更具体的问题(非可选参数):对不起,这是我编写的psuedo代码,已经更正了。这里的问题是,如果我传递一些值或一个空名称参数,我就能够调用SP。但是我在DB中有检查name=null的逻辑,所以通过使用上述语法,我无法传递null或完全避免传递name参数(在ADO.NET中完成)“必须声明标量变量@name”异常在我尝试传递null时引发。生成的SQL:exec sp_executesql N'exec dbo.sp_getcustomers@name',N'@name nvarchar(20)' . 没有名称参数的声明。使用Dapper生成的sql是exec dbo.sp_getcustomers@name=null,我也遇到了同样的问题。我不知道如何将参数设置为NULL。你有没有找到解决方法?我在这里创建了一个更具体的问题(非可选参数):