EF Core 3.1.9 - 使用存储过程的 FromRawSql 停止工作 - "基础读取器的字段数量不如预期。



曾经使用FromSqlRaw调用存储过程对我有效。我没有在项目中改变任何东西,但现在使用FromSqlRaw返回

调用任何存储过程

底层读取器没有预期的那么多字段

我从项目中删除了模型并执行了BUILD。然后又把模型加了回去,运气不好。我将模型和存储过程简化为返回单列,但没有成功。

我尝试添加Microsoft.EntityFrameworkCore.Relational作为依赖项,没有运气。我所有使用FromSqlRaw调用存储过程的单元测试都返回相同的错误,并且在同一时间它们都工作。

我已经收到了Windows更新,但我不知道这将影响EF Core。我已经浏览了我能找到的所有解决互联网问题的方法。我开始认为我需要使用ADO作为一种工作方式,但我不想在某一点上为我工作。我的机器发生了一些变化,但我不确定是什么原因导致这个问题。

这是我的测试方法,以防我的代码混乱。这是非常直接的,不会搞砸的。我试了"变种"。无奈之下。

[TestMethod]
public void WorkOrderBOMGridABS()
{
List<WorkOrderBOMGridABS> baseList = new List<WorkOrderBOMGridABS>();
using (WorkOrderDataContext context = new WorkOrderDataContext())
{
var param = new SqlParameter[] {
new SqlParameter() {
ParameterName = "@WorkOrderId",
SqlDbType =  System.Data.SqlDbType.Int,
Direction = System.Data.ParameterDirection.Input,
Value = 38385
}
};
baseList = context.WorkOrderBOMGridABS.FromSqlRaw("[dbo].[WorkOrderBOMGridABS] @WorkOrderId", param).ToList();
//var results = context.WorkOrderBOMGridABS.FromSqlRaw("[dbo].[WorkOrderBOMGridABS] @WorkOrderId", param).ToList();
Assert.IsNotNull(baseList);
}
}

我使用一个旧表来获取具有整数ID值的度量单位值。我将其切换为使用一个具有VARCHAR ID值的新表。对存储过程和模型代码进行这样的更改允许FromRawSql工作。不确定为什么,因为当整数ID值得到一个整数时,要么是0,要么是0以外的数字,它是模型的有效值。我收到的任何错误消息都没有提到这个UnitId字段。这是一个痛苦,但我很高兴它解决了。至少在我遇到下一个错误之前,这些都是可以保证的。

最新更新