Entity Framework 支持 DataTable
支持 Framework Entity dataTable
2023-09-11 14:21:23 时间
转载:http://www.cnblogs.com/wlflovenet/archive/2011/12/30/EF11.html
datatable 在有的时候是非常有用的 例如 做报表等 因为我们不可能为每个报表建一个 实体类 这样比较麻烦
这个时候返回datatable 则比较有用
(这也是Entity Framework跨库的一种解决方案,虽然无法直接获取实体对象。不过对于webapi来说,直接返回datatable给访问者,会自动转换为json。所以如果你使用webapi时,遇见Entity Framework跨库,也可以采用这种方式)
写一个扩展方法
/// <summary> /// EF SQL 语句返回 dataTable /// </summary> /// <param name="db"></param> /// <param name="sql"></param> /// <param name="parameters"></param> /// <returns></returns> public static DataTable QueryTable_Extend(this Database db, string sql, SqlParameter[] parameters=null) { SqlConnection conn = new System.Data.SqlClient.SqlConnection(); try { conn.ConnectionString = db.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; } finally { conn.Close(); } }
调用如下
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { GridView1.DataSource = GetDataTable(); GridView1.DataBind(); } } public DataTable GetDataTable() { GardenHotelContext context = new GardenHotelContext(); int LanType = 0; int state = 0; SqlParameter[] sqlparams=new SqlParameter[2]; sqlparams[0]=new SqlParameter("LanType",LanType); sqlparams[1]=new SqlParameter("state",state);
//这里有个问题,在使用时传递进来的 db.Connection有时为空。 //(具体原因还没找到。调试过,db的确有值,但是调用次方法时,就会显示没值,导致数据库登陆失败) //所以需要给db.Connection重新赋值一下 db.Connection.ConnectionString = WebConfigurationManager.ConnectionStrings["POEntities"].ToString();DataTable DataTable = context.Database.SqlQueryForDataTatable("select LeaveName,LeaveEmail from LeaveInfo where LanType=@LanType and State=@State", sqlparams); return DataTable; }
相关文章
- 此版本的 SQL Server 不支持用户实例登录标志。该连接将关闭“的解决
- python中的字符串常量,是否支持通过下标的方式赋值
- Entity Framework 不支持DefaultValue
- vue项目 ie提示:视频类型不受支持或文件路径无效;解决方案
- [其它]iOS 12.2支持电信VoLTE了,中国电信教你如何开通:只要三步
- supersockets支持热更新的服务器实例配置选项
- SwiftUI 超强大文章编辑组件支持多行显示并限制行数与字符数(兼容SwiftUI1.0和SwiftUI 2.0)
- Quartus Prime 技巧之 intel quartus prime 是否支持 AGILEX F 系列 FPGA 的增量编译?
- 安装支持eigen线性迭代的ceres_solver
- SwiftUI Widget教程设计篇之 05 支持暗模式
- 单个APP页面支持屏幕旋转
- 二、使用Navicat连接阿里云服务器宝塔面板里创建的数据库支持 root
- 怎么让 Lua 5.3.4 支持中文变量名和中文函数名
- 微软为什么要用英伟达的GPU来支持CNTK?
- iOS - 用Masonry封装的slider,完全支持Masonry的适配
- mysql 动态增加列,查找表中有多少列,具体什么列。 通过JSON生成mysql表 支持子JSON