EF Core имеет функцию , где он может оценивать части запроса в памяти, когда эта часть не может быть выполнена в БД.Когда это происходит, регистрируется предупреждение.
Опционально EF Core может быть настроен на выдачу исключения, когда это происходит
optionsBuilder
.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=EFQuerying;Trusted_Connection=True;")
.ConfigureWarnings(warnings => warnings.Throw(RelationalEventId.QueryClientEvaluationWarning)); // <--
После оценки чего-либо в памяти, что программист намеревался выполнить вБД может быть огромной проблемой производительности и несколько нечистой imho Я сейчас думаю об использовании этой конфигурации исключений везде и всегда.
Мне просто интересно, есть ли какие-нибудьвеские причины не бросать исключение?Лично я предпочел бы исключение, а затем изменить код, который будет выполняться преднамеренно в памяти (например, с помощью .ToList()
перед проблемным оператором).Мне странно, что EF просто обошел бы такой недостаток дизайна.
Однако я не уверен, забыл ли я какую-либо вескую причину, почему это вообще существует, или любую ситуацию, где это может быть необходимо.