23.09.2018 LINQ (EFCore) вычисления на сервере и локально.
 
На сколько я понимаю, LINQ-выражения, связанные с запросами к базам данных, могут вычисляться как локально, так и на сервере.

При чем это может происходить даже в рамках одного выражения.

Правила вычисления у сервера БД отличаются от "локальных" правил.

Например,
DBMS: NULL+'строка' -> NULL
LOCAL (C#): NULL+"строка" -> "строка"

Или получение подстроки:
DBMS: SUBSTRING('12345',100) вернет пустую строку
LOCAL (C#): "12345".Substring(100) сгенерирует исключение

Когда смотришь на LINQ-запрос — нельзя точно сказать, что и где и будет вычислено.

Вопрос — как с этим жить этим вообще можно пользоваться?

Это (EF.Core) можно как-то заставить работать по одним правилам (желательно сервера)?

 
 
 
 
10.12  .NET Reactor
15.11  n
15.11  C# ClickOnce