I have an Entity SQL query:
SELECT VALUE t FROM MyEntities AS t
WHERE t.Name = @p OR (@p IS NULL AND t.Name IS NULL)
I can execute the query as follows:
var results = context.CreateQuery<WorkflowInstance>(
query, new ObjectParameter("p", name)).ToList();
However, if the 'name' variable is null, then I get the System.ArgumentNullException. So I also tried to use DBNull.Value if the name was null, and I get the following exception:
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.
I would like to have parameterized queries where null values are also possible parameter values. How do I achieve this with Entity SQL?
You are right, seems to be a bug in the ObjectParameter constructor. But the Value property seems to accept null values. Try to replace your code with:
If you assign the Value parameter directly the code seems to work.
Davide
Nice post Davide, I used this fix to pass an integer value;