Entity Framework执行Sql语句返回DataTable
2015-11-17 17:00
375 查看
Entity Framework中对外开放了数据库连接字符串,使用的时候可以直接得到这个连接字符串,然后进行相关的操作。如果在使用的过程中,发现Entity Framework中有一些满足不了的需求的话,那么就可以用这个连接字符串,自己写ADO的代码,去数据库进行相关的操作。特别是对于一些复杂的查询,这时候,一般是想直接执行一个Sql语句,返回一个结果集。下面是一个方法,直接返回DataTable。
然后调用的时候,直接传入Context的Database进去,就可以了。
方法二、写成类的扩展方法
/// <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; } }
相关文章推荐
- redis集群方案总结
- SQLSERVER 获取手机号码归属地
- 安装mongodb centos6.5 x86_64
- mysql 数据库 简单存储过程游标使用
- redis缓存技术学习 www.iigrowing.cn/redis-huan-cun-ji-shu-xue-xi.html
- SQLite查询记录总数
- JDBC链接MySQL和Oracle
- SQL 客户端查看
- MyBatis直接执行SQL查询及批量插入数据
- Linux安装mariadb新版本
- host is not allowed to connect to this MySql server
- mysqldump: Got error: 1044
- PDO操作mysql数据库-01
- tornado_mongodb 连接和使用
- SQLSERVER2012 保存阿拉伯文字乱码的问题
- MongoDB小结15 - find【查询条件$ne】
- 基于Mycat开源数据库中间件 主从的部署 推荐
- 数据库课程设计开发笔记(一)
- MongoDB小结14 - find【查询条件$lt $lte $gt $gte】
- MongoDB小结13 - find【2个参数】