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

Asp.net 如何正确地从Sql中的存储过程返回到模型?,asp.net,entity-framework,Asp.net,Entity Framework,我需要将存储过程中的值列表返回到我的模型。我该如何做: [HttpGet("{id}")] public DataSource Get(int id) { DataSource ds = _dbContext.DataSources.Where(d => d.Id == id) .Include(d => d.DataSourceParams) .ThenInclude(p => p.Sel

我需要将存储过程中的值列表返回到我的模型。我该如何做:

[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();
info=this.DbContext.Database.SqlQuery(sql,param1,param2).FirstOrDefault();
就是这样


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

谢谢您的回答,但是SqlQuery在EF7中不存在。它已被FromSql替换,但我不知道如何使用它