Я новичок в Blazor / ASP.net core / EF и пытаюсь отобразить некоторые результаты с помощью Linq. Я сталкиваюсь с проблемой результата, дублирующегося.
Сначала я использую context1 для выполнения хранимой процедуры GetJobNumbers, которая принимает 2 параметра. Порядковый номер и идентификационный номер. Результатом этого является 2 строки. Каждая строка содержит столбец с именем table_name. Я использую это имя_таблицы как переменную в context2 в качестве аргумента для вызова правильного JobNumber. Это то, что у меня есть в файле Context.cs для context2:
'''
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 (), и результат тот же. Я также, хотя с использованием 'using', объект должен располагаться на следующей итерации, поэтому данные не должны кэшироваться. Может ли кто-нибудь дать мне некоторое представление о том, что я могу делать неправильно? Последние 4 часа я дергал себя за волосы, пытаясь понять, что я делаю неправильно.
Надеюсь, я объяснил это хорошо, если не смогу попытаться собрать несколько снимков экрана.