zoukankan      html  css  js  c++  java
  • Entity Framework执行Sql语句返回DataTable

    Entity Framework中对外开放了数据库连接字符串,使用的时候可以直接得到这个连接字符串,然后进行相关的操作。如果在使用的过程中,发现Entity Framework中有一些满足不了的需求的话,那么就可以用这个连接字符串,自己写ADO的代码,去数据库进行相关的操作。特别是对于一些复杂的查询,这时候,一般是想直接执行一个Sql语句,返回一个结果集。下面是一个方法,直接返回DataTable。

    /// <summary>
    /// EF SQL 语句返回 dataTable
    /// </summary>
    /// <param name="db"></param>
    /// <param name="sql"></param>
    /// <param name="parameters"></param>
    /// <returns></returns>
    public static DataTable SqlQueryForDataTatable(this Database db,
    string sql,
    SqlParameter[] parameters)
    {
    SqlConnection conn = new System.Data.SqlClient.SqlConnection();
    conn.ConnectionString = db.Connection.ConnectionString;
    if (conn.State != ConnectionState.Open)
    {
    conn.Open();
    }
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = conn;
    cmd.CommandText = sql;
    if (parameters.Length > 0)
    {
    foreach (var item in parameters)
    {
    cmd.Parameters.Add(item);
    }
    }
    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    DataTable table = new DataTable();
    adapter.Fill(table);
    return table;
    }

    然后调用的时候,直接传入Context的Database进去,就可以了。

    方法二、写成类的扩展方法

     public static class DbExtend
        {
            public static DataTable Select_Table_Info(this DbEntities model, string sql, SqlParameter[] parameters)
            {
                SqlConnection conn = new System.Data.SqlClient.SqlConnection();
                conn.ConnectionString = model.Database.Connection.ConnectionString;
                if (conn.State != ConnectionState.Open)
                {
                    conn.Open();
                }
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = conn;
                cmd.CommandText = sql;
                if(parameters !=null && parameters.Length >0)
                    foreach (var item in parameters)
                    {
                        cmd.Parameters.Add(item);
                    }
                SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                DataTable table = new DataTable();
                adapter.Fill(table);
                return table;
            }
        }
  • 相关阅读:
    Android OpenSL ES 开发:OpenSL ES利用SoundTouch实现PCM音频的变速和变调
    Android OpenSL ES 开发:Android OpenSL 录制 PCM 音频数据
    Android MediaPlayer SeekTo 在 8.0 版本上优化说明
    Android OpenSL ES 开发:Android OpenSL 介绍和开发流程说明
    Android NDK学习(七):NDK 编译支持 C++特有的库
    Hystrix浅谈
    RxJava
    Metrics介绍和Spring的集成
    Hystrix系列-5-Hystrix的资源隔离策略
    深度解析SpringMvc实现原理手写SpringMvc框架
  • 原文地址:https://www.cnblogs.com/itjeff/p/4972250.html
Copyright © 2011-2022 走看看