Reputation: 1118
I migrated my project from ASP.NET Core 2.2 to ASP.NET Core 3.0. Now I get this exception. In ASP.NET Core 2.2 it was using FromSql()
; now it is using FromSqlRaw()
. I am calling my procedure using 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();
Upvotes: 14
Views: 9564
Reputation: 11
The reverse is true also: you must use System.Data.SqlClient.SqlParameters
with EF 6, not Microsoft.Data.SqlClient.SqlParameters
.
Also be sure to use Microsoft.SqlServer.Server.SqlDataRecords
, not Microsoft.Data.SqlClient.Server.SqlDataRecords
.
Upvotes: 0
Reputation: 1118
This code worked after replacing
System.Data.SqlClient.SqlParameter
to
Microsoft.Data.SqlClient.SqlParameter
and
FirstOrDefault();
to
ToList();
Upvotes: 39
Reputation: 981
Fixed by changing using System.Data.SqlClient to using Microsoft.Data.SqlClient
https://github.com/aspnet/EntityFrameworkCore/issues/16812#issuecomment-516013245
Upvotes: 29