Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我在查询两个不同的表时从EF core得到相同的结果?_C#_Entity Framework Core - Fatal编程技术网

C# 为什么我在查询两个不同的表时从EF core得到相同的结果?

C# 为什么我在查询两个不同的表时从EF core得到相同的结果?,c#,entity-framework-core,C#,Entity Framework Core,我是Blazor/ASP.net core/EF新手,正在尝试使用Linq显示一些结果。我遇到了结果重复的问题 我首先使用context1执行存储过程GetJobNumbers,它包含两个参数。序列号和ID号。其结果是生成两行。每行包含一个名为table_name的列。我在context2中使用该表的名称作为变量作为参数来调用正确的JobNumber。这是context2的Context.cs文件中的内容: ''' public DBContext(string table_name) { Jo

我是Blazor/ASP.net core/EF新手,正在尝试使用Linq显示一些结果。我遇到了结果重复的问题

我首先使用context1执行存储过程GetJobNumbers,它包含两个参数。序列号和ID号。其结果是生成两行。每行包含一个名为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);
                };
            }
        }
    };
'''
“”
公开结果清单;
公共无效记录lookupprod()
{
lstTableResults=新列表();
使用(var context1=new Models.JobTrackingContext())
{
var RangeTrackingJobNumber=context1.RangeTracking.FromSqlRaw(“执行getJobNumber{0},{1}”,SeqNo,ID.).AsNoTracking().ToList();
如果(RangeTrackingJobNumber.Count>0)
{
foreach(RangeTrackingJobNumber中的变量JobNum)
{
使用(var context2=newmodels.DBContext(JobNum.table_name))
{
var JobNumberData=(来自context2.TableResults中的s,其中s.barcode==条形码选择s);
lstImbTable.AddRange(JobNumberData);
};
}
}
};
'''
问题是JobNumberData在两次迭代中都收到了相同的结果,尽管当我逐步浏览代码时,我可以看到每个context2迭代都使用了正确的表名结果是一样的。我还认为使用“using”应该在下一次迭代中处理对象,这样数据就不应该被缓存。有人能给我一些关于我可能做错了什么的见解吗?我在过去的4个小时里一直在纠结我做错了什么


我希望我能很好地解释这一点,如果没有,我可以试着收集一些屏幕截图。

删除多余的标记-这是一个ef问题,最有可能的问题是如何使用
JobNimberTableName
HasTableName
inside
OnModelCreating
?)。请参阅,对此标记感到抱歉。感谢您提供的链接。我将进行更多挖掘。您可以共享更多详细信息吗?我们不知道您的dbcontext,也不知道您的模型。您还需要共享此过程。