EFCore 执行原生SQL语句
1、执行非查询语句:
mydbContext.Database.ExecuteSqlInterpolatedAsync($"");
ExecuteSqlInterpolatedAsync这个方法:
public static int ExecuteSqlInterpolatedAsync(this DatabaseFacade databaseFacade, FormattableString sql)
{
return databaseFacade.ExecuteSqlRaw(sql.Format, sql.GetArguments());
}
他的参数是:FormattableString ,可以使用参数化执行,不会SQL注入。
mydbContext.Database.ExecuteSqlRawAsync 执行原生的SQL语句,可能会有注入风险,慎用。
2、查询结果可以对应一个实体的查询
IQueryable<Book> books = mydbContext.Books.FromSqlInterpolated($"");
会将查询结果对应到Books上。
复杂的SQL语句查询 还是可以用Dapper。