aspnetboilerplate && .net core 使用原生sql
利用aspnetboilerplate提供的工具类IDbContextProvider
private readonly IDbContextProvider_provider; public XXXAppService(IDbContextProviderprovider) { _provider = provider; }
登录后复制
public async Task Query() { var sql="your sql"; var tableList = _provider.GetDbContext().Query() .FromSql(sql) .AsNoTracking() .ToList(); }
登录后复制
参考资料
Raw SQL Queries
How to execute a sql string in the application layer
比较原始 && 通用的方式
public class SqlHelper { public DataTable QueryForDatable(string sql) { SqlConnection conn = new System.Data.SqlClient.SqlConnection(); conn.ConnectionString = GetConnectionString(conn); if (conn.State != ConnectionState.Open) { conn.Open(); } SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = sql; SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataTable table = new DataTable(); adapter.Fill(table); conn.Close(); conn.Dispose(); return table; } //简而言之,拿到数据库连接字符串 private static string GetConnectionString(SqlConnection conn) { //这里需要拿到appsettings.json所在文件夹路径 var currentDirectoryPath = Directory.GetCurrentDirectory(); var configuration = AppConfigurations.Get(currentDirectoryPath); //connectionStringName是数据库连接字符串在appsettings.json中的对应名称 return configuration.GetConnectionString(connectionStringName); } /// /// SQL 语句返回 dataset /// /// /// public DataSet QueryForListDataTable(string sql) { SqlConnection conn = new SqlConnection(); conn.ConnectionString = GetConnectionString(conn); if (conn.State != ConnectionState.Open) { conn.Open(); } SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = sql; SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataSet dataSet = new DataSet(); adapter.Fill(dataSet); conn.Close(); conn.Dispose(); return dataSet; } }
登录后复制
©著作权归作者所有:来自51CTO博客作者mb60854e935d6fd的原创作品,如需转载,请注明出处,否则将追究法律责任
aspnetboilerplate原生SQL