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替换,但我不知道如何使用它