Dapper关联查询
1、一对一:
using (IDbConnection connecton = new MySqlConnection(ConfigurationManager.ConnectionStrings["default"].ConnectionString))
{
string sql = @"SELECT *
from expand_userbasicinformation b
JOIN expand_users u on b.UserId = u.UserId";
var infos = connecton.Query<UserInfo, User, UserInfo>(sql, (info, user) =>
{
info.User = user;
return info;
}, splitOn: "UserId");
}
其中,实体定义如下:
public class UserInfo
{
public string InformationId { get; set; } public string UserId { get; set; } public User User { get; set; } public string RealName { get; set; }
} public class User
{
public string UserId { get; set; } public string LoginName { get; set; } public string LoginPassword { get; set; }
}
2、一对多:
using (IDbConnection connecton = new MySqlConnection(ConfigurationManager.ConnectionStrings["crmcontroller"].ConnectionString))
{
List<Client> clients = new List<Client>();
string sql = @"SELECT *
from crm_client_list
join crm_client_field_value on ClientId = ModelId";
var infos = connecton.Query<Client, ClientField, Client>(sql, (c, f) =>
{
var currentClient = clients.Find(x => x.ClientId == c.ClientId);
if (currentClient == null)
{
c.Fields.Add(f);
clients.Add(c);
return c;
}
else
{
currentClient.Fields.Add(f);
return currentClient;
}
}, splitOn: "ModelId");
}
其中,实体定义如下:
public class Client
{
public Client()
{
this.Fields = new List<ClientField>();
} public string ClientId { get; set; } public string Name { get; set; } public string PhoneNumber { get; set; } public string IDNumber { get; set; } public List<ClientField> Fields { get; private set; }
} public class ClientField
{
public string FieldValueId { get; set; } public string ModelId { get; set; } public string FieldId { get; set; } public string FieldValue { get; set; }
}
Dapper关联查询的更多相关文章
- JDBC MySQL 多表关联查询查询
public static void main(String[] args) throws Exception{ Class.forName("com.mysql.jdbc.Driver&q ...
- MYSQL基础操作之数据约束与关联查询
一.MYSQL约束 1.默认值约束,当字段没有插入值的时候,mysql自动给该字段分配默认值. 默认值的字段允许为空. 对默认值字段也可以插入null. CREATE TABLE STUDENT( I ...
- C#代码中实现两个表(DataTable)的关联查询(JOIN)
之前通常都是使用SQL直接从数据库中取出表1和表2关联查询后的数据,只需要用一个JOIN就可以了,非常方便.近日遇到一种情况,两个表中的数据已经取到代码中,需要在代码中将这两个表关联起来,并得到它们横 ...
- Mybatis关联查询和数据库不一致问题分析与解决
Mybatis关联查询和数据库不一致问题分析与解决 本文的前提是,确定sql语句没有问题,确定在数据库中使用sql和项目中结果不一致. 在使用SpringMVC+Mybatis做多表关联时候,发现也不 ...
- Mysql多表表关联查询 inner Join left join right join
Mysql多表表关联查询 inner Join left join right join
- YII2-数据库数据查询方法,关联查询with, joinWith区别和分页
一.ActiveRecord 活动记录 1.with关联查询 例如,查询评论 $post = Post::find()->with('comments'); 等价于以下结果集 SELECT * ...
- Mybatis高级查询之关联查询
learn from:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#Result_Maps 关联查询 准备 关联结果查询(一对一) resul ...
- Spring+MyBatis框架中sql语句的书写,数据集的传递以及多表关联查询
在很多Java EE项目中,Spring+MyBatis框架经常被用到,项目搭建在这里不再赘述,现在要将的是如何在项目中书写,增删改查的语句,如何操作数据库,以及后台如何获取数据,如何进行关联查询,以 ...
- [NHibernate]一对多关系(关联查询)
目录 写在前面 文档与系列文章 一对多查询 总结 写在前面 上篇文章介绍了nhibernate的一对多关系如何配置,以及级联删除,级联添加数据的内容.这篇文章我们将学习nhibernate中的一对多关 ...
随机推荐
- 汇编初入门debug实操
修改cs:ip的值 jmp 段地址:偏移地址 //在汇编指令中用,不是在debug上用的 如 jmp 2AE3:3 //执行后CS=2AE3H ip=0003H 若只修改IP内容 jmp 某一个合法的 ...
- SQL Server 2012日志文件误删除数据库质疑后的相关恢复
alter database testdb set emergencyalter database testdb set single_userdbcc checkdb('testdb',REPAIR ...
- JS数组push会覆盖前面的数据问题
这是一个作用域和重新赋值的问题. 检查声明数组所在位置,特别在是多层嵌套中,检查是否在内层循环结束时 跳到外层循环就重新将 数组 赋值为空.
- Sublime插件安装
来在Sublime text3上安装Package Control 使用Ctrl+`(ESC下边的那个~)快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码: imp ...
- TENDA-F322路由器管理工具
https://yunpan.cn/cYsfNxJLfVnUY (提取码:d0ae)
- 使用Fluent配置表关系
转载MS官方文档:https://msdn.microsoft.com/zh-cn/data/jj591620 Configuring Relationships with the Fluent AP ...
- ARCGIS如何进行可视域分析
可视域分析在不同的领域有着广泛的应用,如火灾监控点的设定,观察哨所的设定等等.军事领域是可视域分析技术应用最广的领域.例如为了设计巡航导弹的航线,就必须对发射点到目标的地形进行分析,包括地形特征优劣分 ...
- 关于web前端开发学习的顺序
学习web前端开发该怎么学,按照什么顺序学习,这是很多新手朋友会遇到的问题.下面简单的说一下.由于在国内大学课程里面,几乎没有前端开发这门课程,无非就是一些网页设计之类的课程,但那些课程无论是老师讲还 ...
- vs2013单元测试练习过程
1.打开VS2013 --> 新建一个项目.这里我们默认创建一个控制台项目.取名为UnitTestDemo 2.在解决方案里面新增一个单元测试项目.取名为UnitTestDemoTest 创建完 ...
- 动态加载script文件的两种方法
第一种就是利用ajax方式,把script文件代码从后台加载到前台,然后对加载到的内容通过eval()执行代码.第二种是,动态创建一个script标签,设置其src属性,通过把script标签插入到页 ...