Основное отличие состоит в том, что это: $"hello {variable}"
- это , а не строка. Это FormattableString . И Entity Framework воспользуется этим и будет использовать его для анализа параметров.
String.Format
, с другой стороны, создаст новую отформатированную строку без мета-информации, которая была (или должна быть) отформатирована. Не существует хорошего способа для структуры сущностей проанализировать это в параметрах базы данных. Он должен будет отправить его в базу данных как .
Итак, подведем итог: если вы передаете строку, она должна иметь правильное форматирование, чтобы база данных понимала текст. Если вы передадите платформе сущности что-то, что она понимает и сможет проанализировать метаданные, она преобразует ее в параметры базы данных, и вам не нужно надлежащее форматирование, потому что она будет отправлена не как обычный текст, а как текст с параметрами базы данных.
Почему Linq-to-Sql не использует силу FormattableString
? Вероятно, потому что это устарело до того, как эта функция вообще существовала.