如何正确地从 Sql 中的存储过程返回到模型



我需要将值列表从存储过程返回到我的模型。我该怎么做:

[HttpGet("{id}")]
    public DataSource Get(int id)
    {
        DataSource ds = _dbContext.DataSources.Where(d => d.Id == id)
            .Include(d => d.DataSourceParams)
                .ThenInclude(p => p.SelectOptions).FirstOrDefault();
        foreach(DataSourceParam p in ds.DataSourceParams)
        {
            if(p.TypeId == 5)
            {
                p.SelectOptions = _dbContext.SelectOptions.FromSql("Exec " + ds.DataBaseName + ".dbo." + "procGetTop50 " + ds.Id + ", 1").ToList();
            }    
        }
        return ds;
    }

首先,使用参数声明您的过程:

string sql = "myProcedure @param1, @param2";

二、创建参数

var param1 = new SqlParameter { ParameterName = "param1", Value = param1Value};
var param2 = new SqlParameter { ParameterName = "param2", Value = param2Value };

最后,执行代码:

info = this.DbContext.Database.SqlQuery<MyModel>(sql, param1, param2).FirstOrDefault();

就是这样!

请记住,您的模型必须与过程列匹配。对于 means,如果过程返回名为"MyProp"的列,则模型"MyModel"必须具有"MyProp"属性。

最新更新