Это довольно просто, на самом деле - перевод никогда не вводит переменные без их параметризации;так:
var orders = from ord in ctx.Orders
where ord.CustomerName = name
select ord;
станет:
SELECT * FROM [dbo].[Orders] WHERE [CustomerName] = @p0
, где p0
- это параметр со значением, взятым из захваченного вами name
не более, не менее,Но это позволяет избежать инъекционных атак.Контраст с неверным случайным:
var sql = "SELECT * FROM [dbo].[Orders] WHERE [CustomerName] = '" + name + "'";
, который создает огромные риски.Вы, конечно, также можете правильно параметризировать вышеприведенное:
var sql = "SELECT * FROM [dbo].[Orders] WHERE [CustomerName] = @name";
(и добавить параметр @name
со значением из name
)