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

前端之家收集整理的这篇文章主要介绍了.net – 实体框架4.0实体SQL传递null ObjectParameter参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个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参数,代码似乎有效.

达维德

原文链接:https://www.f2er.com/mssql/76235.html

猜你在找的MsSQL相关文章