EF如何确定可空参数
本文关键字:参数 何确定 EF | 更新日期: 2023-09-27 17:54:39
我有一个SQL存储过程,我需要能够将NULL
作为值传递给它的一个参数,以便在如下查询中使用:
create procedure sp
@param1 varchar(30)
as
select * from table where field = isnull(@param1, field)
所以我需要告诉EF使@param1
为空。我该怎么做呢?
谢谢!
如果有帮助,我使用EF的过程是:
- 创建SP
- 更新模型(edmx)
- 添加新功能import
- 通过点击 按钮生成新的复合类型
- 在单独的模板文件上运行自定义工具(生成POCO)
作为一种解决方法,您可以声明两个单独的存储过程:
-- use this for non-null parameters
create procedure sp
@param1 varchar(30)
as
select * from table where field = @param1
-- use this for null
create procedure sp_null
as
select * from table
,然后你可以用c#写你想要的抽象:
public ... GetSp(string param1)
{
if (param1 == null)
return ....sp_null();
else
return ....sp(param1);
}
快速查看,我在stackoverflow上找到了这个。希望能有所帮助。
实体框架4.0实体SQL传递空ObjectParameter参数
使用DBNull.Value
,我已经用我的一个存储过程完成了这一点。要调用您的过程,我的代码看起来像:
List<ObjectParameter> objectParameterList = new List<ObjectParameter>();
if (string.IsNullOrEmpty(param1))
{
object nullValue = DBNull.Value;
objectParameterList.Add(new ObjectParameter("param1", nullValue));
}
else
{
objectParameterList.Add(new ObjectParameter("param1", param1));
}
context.ExecuteFunction("MyEFModel.sp", objectParameterList.ToArray());
将存储过程中的默认值设置为NULL。
create procedure sp
@param1 varchar(30) =NULL
as
select * from table where field = isnull(@param1, field)