Mas*_*Mas 6 .net entity-framework .net-4.0 entity-sql entity-framework-4
我有一个Entity SQL查询:
SELECT VALUE t FROM MyEntities AS t
WHERE t.Name = @p OR (@p IS NULL AND t.Name IS NULL)
Run Code Online (Sandbox Code Playgroud)
我可以执行如下查询:
var results = context.CreateQuery<WorkflowInstance>(
query, new ObjectParameter("p", name)).ToList();
Run Code Online (Sandbox Code Playgroud)
但是,如果'name'变量为null,那么我得到System.ArgumentNullException.所以如果名称为null,我也尝试使用DBNull.Value,我得到以下异常:
捕获到System.ArgumentOutOfRangeException
消息=指定的参数类型"System.DBNull"无效.仅支持标量类型,例如System.Int32,System.Decimal,System.DateTime和System.Guid.
我想要参数化查询,其中空值也是可能的参数值.如何使用Entity SQL实现此目的?
Dav*_*rdi 12
你是对的,似乎是ObjectParameter构造函数中的一个bug.但Value属性似乎接受空值.尝试用以下代码替换您的代码:
var prm = new ObjectParameter("p", typeof(string));
prm.Value = name;
var results = context.CreateQuery<WorkflowInstance>(
query, prm).ToList();
Run Code Online (Sandbox Code Playgroud)
如果直接分配Value参数,代码似乎有效.
达维德
| 归档时间: |
|
| 查看次数: |
8276 次 |
| 最近记录: |