我需要通过EntityFrameworkCore 2在我的MSSQL Db上运行存储过程。我有以下方法;
public IList<Trader> GetTradersWithinRadius(int category, decimal latitude, decimal longitude)
{
var sproc = "FindTradersWithinRadius";
var sqlParams = new List<SqlParameter>()
{
new SqlParameter("@CATEGORY", category),
new SqlParameter("@LATITUDE", latitude),
new SqlParameter("@LONGITUDE", longitude),
};
var parameters = sqlParams.ToArray<object>();
return this.Traders.FromSql($"{sproc} @CATEGORY, @LATITUDE, @LONGITUDE", sqlParams).ToList();
}
但是EF在运行时会出现以下错误?
无法找到CLR类型
的关系类型映射List<SqlParameter>
有人能告诉我,我在做错了吗?
答案 0 :(得分:2)
List<SqlParameter>()
无法将参数传递给StoredProcedure
。最好使用SqlParameter[]
(SqlParameter
数组)。
答案 1 :(得分:0)
如果您在范围内有DBContext,则可以使用以下代码而不是FromSql
_databaseContext.Database.ExecuteSqlCommandAsync($"EXEC {storedProcedureName} @param1, @param2", new SqlParameter("param1", param1), new SqlParameter("param2", param2));