Dapper多表查询无法设置数据源

问题描述

下面的代码是没有问题的,可以正常绑定数据源using(IDbConnectionconn=DbProviderFactories.GetFactory(connStr.ProviderName).CreateConnection()){conn.ConnectionString=connStr.ConnectionString;varsql="select*fromEMP,DEPTwhereEMP.deptno=DEPT.deptno";varlist=conn.Query<Model.EMP,Model.DEPT,Model.EMP>(sql,(EMP,DEPT)=>{returnEMP;},null,null,true,"DEPTNO");if(list.Count()==0){MessageBox.Show("没有查询到数据!");return;}dataGridViewDemo.DataSource=list;}

可是我如果用Query()方法的另一个重载,DataGridView上却什么数据也不显示,设置断点list已经有值,说明已经查询到数据了,可就是绑定不成功。EMP表和DEPT表的实体我都已经建好了。list.ToList()也不行,其实list本身就已经实现了IEnumerable接口可以直接绑定的。using(IDbConnectionconn=DbProviderFactories.GetFactory(connStr.ProviderName).CreateConnection()){conn.ConnectionString=connStr.ConnectionString;varlist=conn.Query("selectEMP.*fromEMP,DEPTwhereEMP.deptno=DEPT.deptno");if(list.Count()==0){MessageBox.Show("没有查询到数据!");return;}dataGridViewDemo.DataSource=list;}

解决方案

解决方案二:
自己顶一下。。
解决方案三:
直接Query而不指定Type时,返回的是dynamic吧,这时候你先确认下通过xxx.YYY能取到数据吗,然后这个适用于数据绑定吗?
解决方案四:
引用2楼starfd的回复:

直接Query而不指定Type时,返回的是dynamic吧,这时候你先确认下通过xxx.YYY能取到数据吗,然后这个适用于数据绑定吗?

恩,是dynamic,list[0].XXX是没有属性的智能提示的可是两种方式不是都返回dynamic数据吗,为什么第二种就绑定不上数据呢?
解决方案五:
实体返回时,绑定的数据取法应该是从属性获取,你要不试验下实体里面的某个属性改成字段,看数据能不能被绑定上,dynamic的那个说实话我也不知道它是个啥东西,获取到的是属性还是字段呢?
解决方案六:
其实获取数据的是Dapperrow类型的
解决方案七:
引用4楼starfd的回复:

实体返回时,绑定的数据取法应该是从属性获取,你要不试验下实体里面的某个属性改成字段,看数据能不能被绑定上,dynamic的那个说实话我也不知道它是个啥东西,获取到的是属性还是字段呢?

网上找了一段话引用

DataGridView的DataSource属性为object类型,但并不意味着任何类型都可以作为DataGridView的数据源。DataGridView的数据源必须是实现以下接口的任意类型:(1)IList接口,包括一维数组。(2)IListSource接口,例如,DataTable和DataSet类。(3)IBindingList接口,例如,BindingList<T>类。(4)IBindingListView接口,例如,BindingSource类。而LINQ查询结果为IEnumerable<T>或IQueryable<T>类型,如果直接作为数据源绑定到DataGridView,将无法显示任何内容。Enumerable类为IEnumerable<T>接口定义了一系列扩展方法,其中的ToList<T>方法可以将IEnumerable<T>转换为List<T>。这样,就可以绑定到DataGridView了

而我即使将结果ToList()后再设置数据源,DataGridView仍然不显示任何数据。
解决方案八:
你查到的是首要条件,然后根据这个会有后续取值逻辑,估计IList的话是用的属性取值
解决方案九:
引用7楼starfd的回复:

你查到的是首要条件,然后根据这个会有后续取值逻辑,估计IList的话是用的属性取值

不知道怎么改代码?

时间: 2024-07-30 21:37:03

Dapper多表查询无法设置数据源的相关文章

oracle-oracl 存储过程 跨表查询结果集无法用游标输出 是权限设置问题吗?

问题描述 oracl 存储过程 跨表查询结果集无法用游标输出 是权限设置问题吗? a用户下存储哦过程 查询B用户下表数据 用游标输出 会提示PL/SQL: ORA-00942: 表或视图不存在 事实 所有不属于自己用户下的都不可以用..包括函数 游标输出结果集会提示表示服不可用 解决方案 只要a有权限访问B的表, 只要通过 B.表名 就可以访问啊

update用其他表的值-A表值设置修改成B表查询值减1

问题描述 A表值设置修改成B表查询值减1 A表里资质员工是F,如果在B表里发现这个员工升级到资质E需要把A表里的资质失效期设置成B表里资质有效期减一天

thinkphp多表查询

在学习thinkphp 的过程中,需要对多表进行操作,但是在实际过程中,总是遇到各种问题,所以写下这篇博文,作为自己的学习历程   在操作过程中,两表查询都没有问题,但是三表查询就开始出现问题   有以下三张表,分表为pl表(uid,content),user表(id,username),lyb表(uid,title)   多表查询操作有以下几种方法:   ㈠视图模型(推荐)   定义视图模型,只需要继承Think\Model\ViewModel,然后设置viewFields属性即可   复制代

Nhibernate多表查询解决办法

概述: 在项目中应用NHibernate架构时,会经常遇到多表查询.因为项目上要用到,通过多天的查询总结了以下 两种解决方案. 解决方案: (1)使用HQL语句,然后把查询出的结果存入临时表中,然后再进行绑定. (2)使用select new OaxtJoinGlxt这种语法,根据查询的内容自己构建相应的实体类. 第一种方案实现具体过程: 我的需求如下: 我需要查询JkptOaxtOrganization实体类中的Orgid,及JkptGlxtOrganization实体类中的Orgname我需

mysql 查询慢-mysql 近5万条数据的表 使用联表查询 出现服务器CPU占用过多

问题描述 mysql 近5万条数据的表 使用联表查询 出现服务器CPU占用过多 mysql 近5万条数据的表 使用联表查询 出现服务器CPU占用过多,贴大神代码求优化指点!!!!!有两张表分别为:lu_yccdd 和 lu_taizhang使用的联表查询代码:SELECT distinct(t.sc_time) sc_timecount(distinct(y.id)) totalcount(distinct(t.cdd_id)) tjjg(count(distinct(y.id))-count(

Oracle常用sql语句(二)之组函数、多表查询

DML(数据操纵语言) INSERT .UPDATE. DELETE 插入操作:INSERT: 语法: INSERT INTO 表名(列名1,列名2 -)VALUES(列值1,列值2-); 注意:列名与列值的类型.个数.顺序要一一对应. 可以把列名当做java中的形参,把列值当做实参. 值不要超出列定义的长度. 如果插入空值,请使用null 插入的日期和字符一样,都使用引号括起来. 修改操作 UPDATE: 语法:UPDATE 表名 SET 列名1=列值1,列名2=列值2 --.. WHERE

Mybatid关联表查询

Mybatid关联表查询 一.一对一关联  1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. 1 CREATE TABLE teacher( 2 t_id INT PRIMARY KEY AUTO_INCREMENT, 3 t_name VARCHAR(20) 4 ); 5 CREATE TABLE class( 6 c_id INT PRIMARY KEY

MyBatis学习总结(五)——实现关联表查询

一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. 按 Ctrl+C 复制代码 CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name VARCHAR(20) ); CREATE TABLE class( c_id INT PRIMARY KEY AUTO_INCREM

mysql SQL 多表查询最优问题

问题描述 mysql SQL 多表查询最优问题 有表 t(t_year,col), t1(t1_year,t1_month,col_1), t2(t2_year,t2_month,col_t2), t3(t3_year,t3_month,col_t3), 和目标表 T(T_year,T_month,col,col_1,col_2,col_3), 将t, t1, t2, t3的数据整合到 T 中,什么样的SQL最优? 解决方案 多个表join,然后设置on的条件判断年,月,日相等条件. 解决方案二