Преобразование строки в FormattableString в Entity Framework

Я пытаюсь создать веб-сайт, уязвимый для SQL-инъекций (в образовательных целях) с помощью ASP.NET API. Для этого я хотел бы вызвать заранее подготовленный SQL-запрос как таковой:

      String query = "SELECT * FROM users WHERE email = '"+email
                  +"' AND password = '"+password+"'";
return RepositoryContext.Users.FromSql(query).FirstOrDefault();

Но этот код не будет компилироваться какFromSqlожидает , а не . Я получаю следующее сообщение об ошибке:

Ошибка CS1503. Аргумент 2: невозможно преобразовать из «строки» в «System.FormattableString».

Следующее будет скомпилировано, но тогда этот код больше не будет уязвим для SQL-инъекций, поскольку Entity Framework выполнит подготовленный SQL-запрос и преобразует адрес электронной почты и пароль в параметры SQL-запроса:

      return RepositoryContext.Users.FromSql(
   $"SELECT * FROM users WHERE email = {email} 
                           AND password = {password}").FirstOrDefault();

Есть ли способ преобразоватьStringкFormattableString?

Спасибо за помощь.

1 ответ

использование System.Runtime.CompilerServices;

...

      var s = "...";
var fs = FormattableStringFactory.Create(s);
Другие вопросы по тегам