Note that there are some explanatory texts on larger screens.

plurals
  1. POWhy does Entity Framework throw an exception when changing SqlParameter order?
    primarykey
    data
    text
    <p>Im using entity framework 4.3 code first for calling stored procedure the way i call the stored procedure is like this:</p> <pre><code>var parameters = new[] { new SqlParameter("member", 1), **new SqlParameter("Code","0165210662660001"),** new SqlParameter("PageSize", 1), new SqlParameter("PageNumber",1) }; var result = context.Database.SqlQuery&lt;resultClass&gt;( "mySpName @member, @Code, @PageSize,@PageNumber" parameters).ToList(); </code></pre> <p>It gets executed on the SqlServer and I get the result.</p> <p>But if I change the order of the paramaters like this:</p> <pre><code>var result = context.Database.SqlQuery&lt;resultClass&gt;("mySpName @Code, @member,@PageSize,@PageNumber" parameters).ToList(); var parameters = new[] { **new SqlParameter("Code","0165210662660001"),** new SqlParameter("Member", 1), new SqlParameter("PageSize", 1), new SqlParameter("PageNumber",1) }; </code></pre> <p>I got an error like this :</p> <pre><code> Error converting data type nvarchar to int </code></pre> <p>The stored procedure is like this : </p> <pre><code>ALTER PROCEDURE [c].[mySpName] @Member INT , @Code VARCHAR (50) , @PageSize INT , @PageNumber INT AS </code></pre> <p>Why do i get this order? Is it important to keep parameters order? What can i do so that I can call a stored procedure without being concerned about parameters order?</p> <p><strong>============ i find a workaround and it works perfectly ============</strong></p> <pre><code>public class blahContext&lt;T&gt; { int i = 0; public IEnumerable&lt;T&gt; ExecuteStoreQuery(string SPname, SqlParameter[] parameters) { using (var context = new CADAContext()) { string para = string.Join(", ", (from p in parameters where !"NULL".Equals(p.Value) select string.Concat(new object[] { "@", p.ParameterName, "={", this.i++, "}" })).ToList&lt;string&gt;()); object[] x = (from p in parameters where !"NULL".Equals(p.Value) select p.Value).ToArray&lt;object&gt;(); return context.Database.SqlQuery&lt;T&gt;(SPname + " " + para, x).ToList(); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload