c# - 将要使用的代码更改为存储过程时,Razor Pages 无法隐式转换类型
问题描述
经过多年的网络表单,我目前正在进入 Razor Pages。
我有以下代码从 SQL Server 存储过程中检索数据:
private readonly AppDbContext context;
public List<DeviationRequests> DeviationDetails { get; set; }
public async Task<DeviationRequests> GetDeviationDetailsAsync(int id)
{
//return await context.apiDeviationRequests.FirstOrDefaultAsync(p => p.DeviationLogID == id);
var parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("@SUB_ID", "5317DBA3"));
parameters.Add(new SqlParameter("@DeviationLogID", id));
DeviationDetails = await context.apiDeviationRequests.FromSqlRaw<DeviationRequests>("dbo.Get_WorkStationDeviationDetails @Sub_ID, @DeviationLogID", parameters: parameters.ToArray()).ToListAsync();
return DeviationDetails;
}
起初它只是使用 linq 检索表数据来测试它,但我需要将其转换为使用存储过程。我已经注释掉了 linq 表检索。
不幸的是,通过存储过程获取数据的新代码会在以下位置产生错误:
return DeviationDetails;
错误是:
无法将类型 system.collections.generic.list <CV2.Models.DeviationRequests> 隐式转换为 CV2.Models.DeviationRequests。
请问我做错了什么?
解决方案
尝试这个:
public async Task<DeviationRequests> GetDeviationDetailsAsync(int id)
{
//return await context.apiDeviationRequests.FirstOrDefaultAsync(p => p.DeviationLogID == id);
var parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("@SUB_ID", "5317DBA3"));
parameters.Add(new SqlParameter("@DeviationLogID", id));
DeviationDetails = await context.apiDeviationRequests.FromSqlRaw<DeviationRequests>("dbo.Get_WorkStationDeviationDetails @Sub_ID, @DeviationLogID", parameters: parameters.ToArray()).ToListAsync();
return DeviationDetails.FirstOrDefault();
}
推荐阅读
- python - Github Action 使用现有的 Python 脚本并获取字符串输出
- html - 样式类别发布 WordPress
- javascript - javascript json 获取对象的数据名称
- gem5 - 如何为 gem5 开发设置 Eclipse IDE?
- python - 打开 JSON txt 文件并将其设置为 DataFrame 时发生 KeyError
- python-3.x - 单击按钮时更新 Lambda 函数参数
- tomcat - Tomcat 连接池:tomcat-jdbc 与 tomcat-dbcp,哪个更好?
- python - Scrapy 默认是异步的吗?
- sql - SQL Server 查找月份的周数
- xrdp - 运行 Sublime 时 XRDP 崩溃