C# 使用ef运行存储过程-不返回任何结果,但在ssms中有效

C# 使用ef运行存储过程-不返回任何结果,但在ssms中有效,c#,entity-framework,C#,Entity Framework,C#: 公共任务FindByIdAsync(int userId) { 对象[]参数={ 新的SqlParameter(“@Name”,SqlDbType.VarChar,20){Value=DBNull.Value,Direction=ParameterDirection.Input}, 新的SqlParameter(“@Email”,DBNull.Value){Direction=ParameterDirection.Input,SqlDbType=SqlDbType.NVarChar,Si

C#:

公共任务FindByIdAsync(int userId)
{
对象[]参数={
新的SqlParameter(“@Name”,SqlDbType.VarChar,20){Value=DBNull.Value,Direction=ParameterDirection.Input},
新的SqlParameter(“@Email”,DBNull.Value){Direction=ParameterDirection.Input,SqlDbType=SqlDbType.NVarChar,Size=50},
新的SqlParameter(“@Id”,Convert.ToInt32(userId)){SqlDbType.Int,Direction=ParameterDirection.Input}
};
context=新的MALoginContext();
var user=context.Database.SqlQuery(“exec dbo.UserRecordGet@Name、@Email、@Id”、parameters).FirstOrDefault();
return Task.Run(()=>{return user;});
}
但我从该方法返回null

但是,以下返回一个MAUser:

 public Task<MAUser> FindByIdAsync(int userId)
 {
     object[] parameters =  {
                                new SqlParameter("@Name",SqlDbType.VarChar,20){  Value = DBNull.Value, Direction = ParameterDirection.Input },
                                new SqlParameter("@Email",DBNull.Value){ Direction = ParameterDirection.Input, SqlDbType = SqlDbType.NVarChar,Size=50},
                                new SqlParameter("@Id",Convert.ToInt32(userId)){  SqlDbType.Int,Direction = ParameterDirection.Input}
                            };

     context = new MALoginContext();
     var user = context.Database.SqlQuery<MAUser>("exec dbo.UserRecordGet @Name, @Email, @Id", parameters).FirstOrDefault();
     return Task.Run<MAUser>(() => { return user; });
 }
公共任务FindByNameAsync(字符串用户名) { 对象[]参数={ 新的SqlParameter(“@Name”,SqlDbType.VarChar,20){Value=userName,Direction=ParameterDirection.Input}, 新的SqlParameter(“@Email”,DBNull.Value){Direction=ParameterDirection.Input,SqlDbType=SqlDbType.NVarChar,Size=50}, 新的SqlParameter(“@Id”,SqlDbType.Int){Value=-1,Direction=ParameterDirection.Input} }; context=新的MALoginContext(); var user=context.Database.SqlQuery(“exec dbo.UserRecordGet@Name、@Email、@Id”、parameters).FirstOrDefault(); return Task.Run(()=>{return user;}); }
我想没有人发现我的错误

线索在商店的产品里。我把参数搞错了。真是个白痴

我在GRRRRR上花了很多时间

 public Task<MAUser> FindByIdAsync(int userId)
 {
     object[] parameters =  {
                                new SqlParameter("@Name",SqlDbType.VarChar,20){  Value = DBNull.Value, Direction = ParameterDirection.Input },
                                new SqlParameter("@Email",DBNull.Value){ Direction = ParameterDirection.Input, SqlDbType = SqlDbType.NVarChar,Size=50},
                                new SqlParameter("@Id",Convert.ToInt32(userId)){  SqlDbType.Int,Direction = ParameterDirection.Input}
                            };

     context = new MALoginContext();
     var user = context.Database.SqlQuery<MAUser>("exec dbo.UserRecordGet @Name, @Email, @Id", parameters).FirstOrDefault();
     return Task.Run<MAUser>(() => { return user; });
 }
 public Task<MAUser> FindByNameAsync(string userName)
     {
         object[] parameters =  {
                                    new SqlParameter("@Name",SqlDbType.VarChar,20){ Value = userName, Direction = ParameterDirection.Input },
                                    new SqlParameter("@Email",DBNull.Value){ Direction = ParameterDirection.Input, SqlDbType = SqlDbType.NVarChar,Size=50},
                                    new SqlParameter("@Id",SqlDbType.Int){ Value=-1,Direction = ParameterDirection.Input}
                                };
            context = new MALoginContext();    
         var user = context.Database.SqlQuery<MAUser>("exec dbo.UserRecordGet @Name, @Email, @Id", parameters).FirstOrDefault();
         return Task.Run<MAUser>(() => { return user; });
     }