aspnetboilerplate && .net core 使用原生sql_weixin_30512089的博客-程序员ITS301

技术标签: 测试  json  数据库  

利用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 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);
    }

    /// <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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30512089/article/details/98344660

智能推荐

oracle中meginto用法,Oracle数据库通过MERGE INTO语句实现条件入库_麒麟瑜的博客-程序员ITS301

MERGE INTO应用场景米虫最近在做老系统跨版本升级,在整理升级SQL的时候,无意中学习到Oracle中的MERGE INTO语法。MERGE INTO主要用于解决对于已有数据更新升级的情况。一般我们升级数据库记录,都是直接写update语句,如果这个记录压根不存在,那就尴尬了。比较常见的做法是,先delete记录在insert记录,这样可以保证执行不出错。比如:DELETE FROM meb...

java版实时获取access_token_muma_biubiu的博客-程序员ITS301

java版微信公众号开发之实时获取access_token

android自定义控件(三) 增加内容 自定义属性 format详解_ethan_xue的博客-程序员ITS301

转自 http://www.gisall.com/html/35/160435-5369.html1. reference:参考某一资源ID。    (1)属性定义:                               background" format = "reference" />                (2)属性使用:

Spring Security 3.1.2 Released_咔啡的博客-程序员ITS301

ReleasesRob WinchAugust 10, 2012We’re pleased to an announce the GA release of Spring Security 3.1.2The release is available from the Spring Community Downloads area and jars are available from Maven central repository. See the project website for more

casio科学计算机算mod余数,如何计算卡西欧fx-991ES计算中的Mod b_love彤彤的博客-程序员ITS301

如何计算卡西欧fx-991ES计算中的Mod b有谁知道如何计算卡西欧fx-991ES计算器中的Mod b。 谢谢user1035927 asked 2019-04-21T19:15:12Z10个解决方案110 votes此计算器没有任何模数函数。 然而,如何使用显示模式ab/c(而不是传统的200^5 mod 391 = (200^3 * 200^2) mod 391 = ((200^3 mod...

随便推点

报表服务器性能,监视报表服务器性能_EditSprings论文润色的博客-程序员ITS301

监视报表服务器性能06/25/2013本文内容使用性能监视工具可监视报表服务器的性能以评估服务器活动,查看趋势,诊断系统瓶颈以及收集可以帮您确定当前系统配置是否充分的数据。 若要优化服务器性能,可指定回收报表服务器应用程序域的频率。 有关详细信息,请参阅为报表服务器应用程序配置可用内存。性能数据的来源结合使用以下技术和工具,可以获得有关系统运行情况的综合信息。 Microsoft Windows ...

Java——输入两个数,判断两数之间有多少个素数,素数和是多少,分别是什么_不要生病~的博客-程序员ITS301_java判断在两个数之间

结果图1.引入包import java.util.*;2.定义,获取输入Scanner input=new Scanner(System.in); System.out.println("输入第一个数"); int x=input.nextInt(); System.out.println("输入第二个数"); int y=input.nextInt(); ...

multiprocessing.cpu_count()_Zella Zhang的博客-程序员ITS301

multiprocessing.cpu_count() —&gt; 实际指的是线程数一开始以为是指cpu核数,可是结果输出为8(运行电脑是四核八线程)。运行结果:运行电脑配置:因此,怀疑multiprocessing.cpu_count()其实是指线程数。...

vue 怎么全局到入常量_Vue 中怎样定义全局的变量和常量_weixin_39863759的博客-程序员ITS301

Vue 中怎样定义全局的变量和常量我想要定义一个变量, 在项目的任何处所都能够接见到, 不须要每一次运用的时刻, 都引入.尝试1:建立 global.js 并且在个中定义let a = 10;在进口文件中引入 global.jsimport './global.js'在项目中运用:a // 报错发明报错了, a 并没有定义. 为何?这个涉及到模块作用域:1 每个 js 都相当于一个模块, 一个模块...

在windows上通过浏览器远程连接Linux服务器的jupyter_du_qi的博客-程序员ITS301

要实现标题所描述的功能,需要在Liunx服务器端和windows客户端分别进行配置,需要配置的内容如下:1、Linux服务器端配置(1)启动ipython,$ ipython(2)创建远程连接密码,In [1]: from notebook.auth import passwd; passwd()输入两次密码,将得到一个字符串,比如'sha1:d0270e88f33b:212384

推荐文章

热门文章

相关标签