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 Queries
How to execute a sql string in the application layergit
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; } }