使用DbSet时.SqlQuery()如何使用命名参数?
技术问答
219 人阅读
|
0 人回复
|
2023-09-13
|
我是一个忠实的支持者,使用命名参数而不是基于字符串的参数。它是安全的类型,对于大多数形式SQL注入是安全的。ADO.NET中间,我询创建一个SqlCommand对象和一堆SqlParameters。" ?( A' `6 s* `: N1 v. H% A
var sSQL = "select * from Users where Name = @Name";var cmd = new SqlCommand(conn,sSQL);cmd.Parameters.AddWithValue("@Name","Bob");cmd.ExecuteReader();现在,在Entity Framework(在这个链接上)似乎已经回归到了简单。String.Format句子和字符串再次注入简化讨论)
/ P( X4 `5 r3 [% P2 N. T6 \6 zMyRepository.Users.SqlQuery("Select * from Users where Name = {0}","Bob");有没有办法与命名参数一起使用命名参数?Entity Framework DbSqlQuery一起使用类?
6 ~7 r6 }( r. | o7 ?4 l: @: i% {
_/ d$ K) V1 R# q9 s# V. F 解决方案: 6 ?; A0 D" l% R+ k/ [
var param = new ObjectParameter(“:p0”,“Bob”);
, ^8 O6 u( y( I- C5 \ MyRepository.Users.SqlQuery(“Select * from Users where Name = :p0”,param); |
|
|
|
|
|