Oracle LINQ Query C # повторное использование контекста для второго запроса в данном представлении возвращает результат первого запроса - PullRequest
0 голосов
/ 07 января 2019

Кажется, что в Oracle LINQ есть ошибка (Oracle.ManagedDataAccess.EntityFramework version = "12.1.2400) в том, что повторное использование контекста (я не использую контексты: это был код, который я унаследовал) означает, что если запрос выполняется в представлении V_MYVIEW, затем второй запрос в том же представлении возвращает результат первого выполнения запроса. Унаследованный мной код использует Unity для вставки контекста в жизненный цикл веб-потока.

Я исправил это с помощью выражения «using (var context = new MyContext)» вместо введенного контекста. Просто любопытно, сталкивался ли кто-нибудь с таким поведением с Oracle LINQ и альтернативным решением.

оригинальный код:

public async Task<List<Thing>> GetThings(string search1)
        {
            var list = injectedContext.V_MYVIEW
                .Where(p=>p.SEARCH1 == search1)
                .Select(p => new ThingModel
                {
                    Thing1 = p.THING1,
                }).ToListAsync();
            return list;        
        }

новый код:

public async Task<List<Thing>> GetThings(string search1)
        {
            using (var context = new MyContext())
            {
                var list = await context.V_MYVIEW
                    .Where(p=>p.SEARCH1 == search1)
                    .Select(p => new ThingModel
                    {
                        Thing1 = p.THING1,
                    }).ToListAsync();
                return list;
            }
        }

Я никогда не использую контексты повторно, так как оператор using очень аккуратен, и аккуратно его удаляет (поэтому освобождает ресурсы для GC), а контексты очень дешевы в создании. (а также это рекомендуемая практика по всем этим причинам). Тем не менее, это должно быть ошибкой в ​​Oracle LINQ, не так ли?

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