aspnetboilerplate&&.net core 使用原生sql

it2022-06-25  89

利用aspnetboilerplate提供的工具类IDbContextProvider

private readonly IDbContextProvider<XXXDbContext> _provider; public XXXAppService(IDbContextProvider<XXXDbContext> provider) { _provider = provider; } public async Task Query() { var sql="your sql"; var tableList = _provider.GetDbContext().Query<Class>() .FromSql(sql) .AsNoTracking() .ToList(); }

参考资料

Raw SQL QueriesHow 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); } /// <summary> /// SQL 语句返回 dataset /// </summary> /// <param name="sql"></param> /// <returns></returns> 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; } }

转载于:https://www.cnblogs.com/Lulus/p/10583585.html

相关资源:数据结构—成绩单生成器

最新回复(0)