Почему я получаю одинаковый результат от ядра EF при запросе двух разных таблиц? - PullRequest
0 голосов
/ 06 ноября 2019

Я новичок в 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 часа я дергал себя за волосы, пытаясь понять, что я делаю неправильно.

Надеюсь, я объяснил это хорошо, если не смогу попытаться собрать несколько снимков экрана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...