加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

.net – 实体框架4.0实体SQL传递null ObjectParameter参数

发布时间:2020-12-12 08:22:51 所属栏目:MsSql教程 来源:网络整理
导读:我有一个Entity SQL查询: SELECT VALUE t FROM MyEntities AS t WHERE t.Name = @p OR (@p IS NULL AND t.Name IS NULL) 我可以执行如下查询: var results = context.CreateQueryWorkflowInstance( query,new ObjectParameter("p",name)).ToList(); 但是,如
我有一个Entity SQL查询:
SELECT VALUE t FROM MyEntities AS t 
WHERE t.Name = @p OR (@p IS NULL AND t.Name IS NULL)

我可以执行如下查询:

var results = context.CreateQuery<WorkflowInstance>(
    query,new ObjectParameter("p",name)).ToList();

但是,如果’name’变量为null,那么我得到System.ArgumentNullException.所以如果名称为null,我也尝试使用DBNull.Value,我得到以下异常:

System.ArgumentOutOfRangeException was caught
Message=The specified
parameter type ‘System.DBNull’ is not
valid. Only scalar types,such as
System.Int32,System.Decimal,
System.DateTime,and System.Guid,are
supported.

我想要参数化查询,其中空值也是可能的参数值.如何使用Entity SQL实现此目的?

解决方法

你是对的,似乎是ObjectParameter构造函数中的一个bug.
但Value属性似乎接受空值.
尝试用以下代码替换您的代码:
var prm = new ObjectParameter("p",typeof(string));
prm.Value = name;

var results = context.CreateQuery<WorkflowInstance>(
    query,prm).ToList();

如果直接分配Value参数,代码似乎有效.

达维德

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读