c # Свойства объекта загружаются из кеша - PullRequest
0 голосов
/ 10 ноября 2018

в моем приложении win-form есть метод, который комбинирует некоторые элементы, которые были созданы ранее, когда код запускается в первый раз, все в порядке, но во втором и последующих запусках комбинированные элементы имеют неправильную длину .

код читает элементы с сервера SQL с использованием LINQ, тип объекта которого называется "BetaData"

BetaData имеет свойство с именем «Длина», которое является двойным. У меня есть еще один список, в котором обработанные элементы хранятся с именем «PartList» типа «ModifiedPartList».

в свойствах длины метода изменяется для некоторых элементов, но в SQL ничего не сохраняется и не сохраняется. это основной метод:

private List<ModifiedPartList> CombinePartList(ProgressBar Bar)
        {
            PartList.Clear();

            List<BetaData> PartsinOrder = new List<BetaData>();
            foreach (int view in Globals.Views)
            {
                List<int> OrdersInView = new List<int>();
                foreach (Tuple<int, int> tuple in Globals.Orders)
                {
                    if (tuple.Item1 == view)
                    {
                        if (!OrdersInView.Contains(tuple.Item2))
                            OrdersInView.Add(tuple.Item2);
                    }
                }
                if(OrdersInView.Count>0)
                {
                    OrdersInView.Sort();
                    foreach (int order in OrdersInView)
                    {
                        //this is the section that problem occurs:
                        var parts = from BetaData in BetaContext.BetaDatas
                                    where BetaData.ProjectName == Globals.ProjectName &&
                                          BetaData.ProjectCode == Globals.ProjectCode &&
                                          BetaData.ParentItem != Globals.ProjectName + "(" + Globals.ProjectCode + ")" &&
                                          BetaData.View == view &&
                                          BetaData.Order == order
                                    select BetaData;
                        PartsinOrder.Clear();
                        PartsinOrder = parts.ToList();
                        foreach(BetaData part in PartsinOrder)
                        {

                            Bar.PerformStep();
                        }
                    }

                }
                PartsinOrder.Clear();
            }
            return PartList;
        }

в разделе, который я прокомментировал как проблемное местоположение, когда код выполняется во второй раз, свойство оптимизированной длины загружается в элементы вместо их исходного значения из SQL. Я не могу понять это, потому что каждый раз, когда я читаю все элементы с сервера SQL. Дело в том, что на этом этапе я несколько раз запускал метод и получал неправильные результаты, когда закрывал программу и запускал ее снова, при первом запуске результаты верны. после выбора из SQL и преобразования его в список я просматриваю элементы и их свойства в списке, и все они имеют значение true, но в цикле foreach, когда каждая часть входит в цикл, их свойство Length неверно.

1 Ответ

0 голосов
/ 11 ноября 2018

проблема была решена с использованием этой статьи и обновлением контекста после извлечения данных из SQL

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