EFCore执行Sql原生语句

FromSql和FromSqlRaw

两者都是返回sql原生查询结果,主要执行的是查询操作

ExecuteSqlCommand

此语句可执行sql操作,返回影响的行数,如update,delete,create等操作。

具体类似

无论sql还是mysql都不能对表名、列名等数据对象进行参数化,想动态操作表名或列名,可以考虑以下几种参考办法:

1、直接调用sql存储过程实现

2、将表名或列名进行判断处理,然后进行字符串拼接

比如if(tableName="student") sql="update student set name=@name where id=@id";

3、对于sql server数据库,考虑使用SqlCommandBuilder Class,将转义表名并且不容易受到sql注入攻击:

SqlCommandBuilder  cmdBuilder=new SqlCommandBuilder();

string tableName=cmdBuilder.QuoteIdentifier(tableName);

那么会在表名字符串或列名字符串两边加上[]如,update [student] ,如果是mysql,则需要用MySqlCommandBuilder,会转义为··。

声明:本站内容来源于原创和互联网,尊重作者版权,转载请注明来源网址,欢迎收藏,谢谢!