阅读 155

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


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐