web-dev-qa-db-ja.com

System.InvalidCastException: 'SqlParameterCollectionは、SQLParameterオブジェクトではなく、NULL以外のSQLParameter型オブジェクトのみを受け入れます。

プロジェクトをASP.Net Core 2.2からASP.NET Core 3.0に移行しました。今この例外が得られます。 ASP.NETコア2.2では、FromSql()を使用していました。これでFromSqlRaw()を使用しています。私はEntity Framework Coreを使用して自分の手順を呼び出しています。

SqlParameter Username = new SqlParameter
            {
                ParameterName = "USERNAME",
                SqlDbType = SqlDbType.NVarChar,
                Value = user.Username,
                Direction = ParameterDirection.Input,
                Size = 50
            };

SqlParameter Password = new SqlParameter
            {
                ParameterName = "PASSWORD",
                SqlDbType = SqlDbType.NVarChar,
                Value = user.Password,
                Direction = ParameterDirection.Input,
                Size = 50
            };

SqlParameter msgOut = new SqlParameter
            {
                ParameterName = "MSG",
                SqlDbType = SqlDbType.NVarChar,
                Direction = ParameterDirection.Output,
                Size = 1000
            };

SqlParameter statusOut = new SqlParameter
            {
                ParameterName = "STATUS",
                SqlDbType = SqlDbType.Int,
                Direction = ParameterDirection.Output
            };

var sql = @"EXEC PRC_USERS_LOGIN
                        @USERNAME, 
                        @PASSWORD, 
                        @MSG OUT, 
                        @STATUS OUT";

Users resultUser = new Users();
resultUser = ctx.Users.FromSqlRaw(sql, Username, Password, msgOut, statusOut)
                      .FirstOrDefault();
 _
7
Muhammad Aftab

このコードは交換後に機能しました

System.Data.SqlClient.SqlParameter
 _

Microsoft.Data.SqlClient.SqlParameter
 _

FirstOrDefault();
 _

ToList();
 _
0
Muhammad Aftab