c# - 为什么在查询 2 个不同的表时从 EF 核心得到相同的结果?
问题描述
我是 Blazor/ASP.net core/EF 的新手,正在尝试使用 Linq 显示一些结果。我遇到了结果重复出现的问题。
我首先使用 context1 执行带有 2 个参数的存储过程 GetJobNumbers。一个序列号和一个 ID 号。这样做的结果是 2 行。每行都包含一个名为 table_name 的列。我使用该 table_name 作为 context2 中的变量作为调用正确 JobNumber 的参数。这是我在 context2 的 Context.cs 文件中的内容:
'''
public DBContext(string table_name)
{
JobNumberTableName = table_name;
}
'''
这是代码部分中的逻辑,当单击表单上的按钮时,我使用它来获取信息并将其添加到列表中。lstImbTable 是接口代码中用来显示结果的。
'''
public List<Models.TableResults> lstResults;
public void RecordLookupProd()
{
lstTableResults = new List<Models.TableResults>();
using (var context1 = new Models.JobTrackingContext())
{
var RangeTrackingJobNumber = context1.RangeTracking.FromSqlRaw("EXECUTE GetJobNumbers {0}, {1}", SeqNo, ID).AsNoTracking().ToList();
if (RangeTrackingJobNumber.Count > 0)
{
foreach (var JobNum in RangeTrackingJobNumber)
{
using (var context2 = new Models.DBContext(JobNum.table_name))
{
var JobNumberData = (from s in context2.TableResults where s.barcode == barcode select s).AsNoTracking().ToList();
lstImbTable.AddRange(JobNumberData);
};
}
}
};
'''
问题是 JobNumberData 在两次迭代中都收到相同的结果,即使当我单步执行代码时,我可以看到每个 context2 迭代都使用了正确的表名。我已经尝试过 AsNoTracking(),结果是一样的。我也使用“使用”对象应该在下一次迭代中处理,因此数据不应该被缓存。有人可以让我了解我可能做错了什么吗?在过去的 4 个小时里,我一直在拉我的头发,试图找出我做错了什么。
我希望我能很好地解释这一点,否则我可以尝试收集一些屏幕截图。
解决方案
推荐阅读
- mysql - 尝试通过 Python 连接 MySQL(使用 Pycharm)时 cursor() 和 connection() 方法不起作用
- swift - 在iOS的应用程序中保存json的最佳方法是什么?
- mysql - 在MySQL中,根据条件从多行中选择一行,否则选择第一行并排除其余行
- javascript - React 嵌套路由问题(无法显示子组件)
- c - 尝试终止时使用管道的 C 程序挂起
- javascript - 使用 js 将活动类添加到当前选定的 svg
- angular - 如何在角度应用程序之外访问角度路由数据
- php - Codeigniter 2.0.2 表单验证 set_rules 自定义错误消息不起作用
- gitlab - 返回 404 的 Gitlab 片段
- php - 当前月份的日期格式问题