如何在EF Core 3.0中将存储过程与SqlParameters一起使用

Pal*_*mar 3 .net-core-3.0 ef-core-3.0

我已经尝试了以下

var p = new SqlParameter("Option", "AUTHENTICATE");
var user = _context.Set<User>().FromSqlRaw("EXECUTE dbo.spGeneral_Authenticate @Option", p).ToList();
var user = _context.Set<User>().FromSqlRaw("EXECUTE dbo.spGeneral_Authenticate @Option=@Option", p).ToList();
Run Code Online (Sandbox Code Playgroud)

SqlParameter[] ps = new SqlParameter[1];
ps[0] = new SqlParameter("Option", "AUTHENTICATE");
var user = _context.Set<User>().FromSqlRaw("EXECUTE dbo.spGeneral_Authenticate @Option", ps).ToList();
var user = _context.Set<User>().FromSqlRaw("EXECUTE dbo.spGeneral_Authenticate @Option=@Option", ps).ToList();
Run Code Online (Sandbox Code Playgroud)

错误:

InvalidCastException:SqlParameterCollection仅接受非null的SqlParameter类型对象,而不接受SqlParameter对象。

Pal*_*mar 5

InvalidCastException:SqlParameterCollection仅接受非null的SqlParameter类型对象,而不接受SqlParameter对象。

对于上述错误,SqlParameter应该是Microsoft.Data.SqlClient.SqlParameter而不是System.Data.SqlClient.SqlParameter