使用.FromSql在EntityFrameworkCore 2中运行Stored Precedure

时间:2018-04-12 08:24:28

标签: c# entity-framework-core

我需要通过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>

的关系类型映射

有人能告诉我,我在做错了吗?

2 个答案:

答案 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));