Dappers : 基于Dapper.net 扩展的Dao - Part II
2011-09-30 11:32
357 查看
用习惯Linq2Sql的盆友肯定对 from... where....select 这种inline式,强类型的 写法大爱不已.可惜我不是,对于表关联, 这种写法及其最终sql 分析都非常 egg疼, 于是乎Dapper作者博客里就有不少将原Linq2sql 转 sql dapper的心得.
但是,我完全同意: 在一般简单查询,Lambda写起来更顺手,更美观,更强类型. (Lambda解析转SQL语句,请看这里)
所以我的Dappers 里 又加了个接口. 所有这些,都是面向sql, 面向跨oracle / sql server 的.
1. 如果彻底不写SQL, 数据库的基本信息还是需要的
[System.Data.Linq.Mapping.Table(Name = "SYS_OFFICE")]
public class MyOffice
{
[System.Data.Linq.Mapping.Column(Name = "OfficeId", IsPrimaryKey = true)]
public string Id { get; set; }
public string Name { get; set; }
public string OfficeType { get; set; }
......
2. Query<T>(whereExpression)
var user = dao.Query<MyUser>(u => u.UserCode.StartsWith("chen"));//此时用到上述mapping,否则无需描述mapping
var user1 = dao.Query<MyUser,MyOffice>("select t.* from SYS_USER t inner join SYS_Office t1 on t.OfficeId=t1.Id",
(u,o) => u.UserCode.StartsWith("chen") && o.Name.Contains("办公室"));
var user2 = dao.Query<IDictionary,MyUser, MyOffice>("select t1.UserCode,t1.Name from SYS_USER t1 inner join SYS_Office t2 on t1.OfficeId=t2.Id",
(d,u, o) => u.UserCode.StartsWith("chen") && o.Name.Length>4);
3.UnitTest result
但是,我完全同意: 在一般简单查询,Lambda写起来更顺手,更美观,更强类型. (Lambda解析转SQL语句,请看这里)
所以我的Dappers 里 又加了个接口. 所有这些,都是面向sql, 面向跨oracle / sql server 的.
1. 如果彻底不写SQL, 数据库的基本信息还是需要的
[System.Data.Linq.Mapping.Table(Name = "SYS_OFFICE")]
public class MyOffice
{
[System.Data.Linq.Mapping.Column(Name = "OfficeId", IsPrimaryKey = true)]
public string Id { get; set; }
public string Name { get; set; }
public string OfficeType { get; set; }
......
2. Query<T>(whereExpression)
var user = dao.Query<MyUser>(u => u.UserCode.StartsWith("chen"));//此时用到上述mapping,否则无需描述mapping
var user1 = dao.Query<MyUser,MyOffice>("select t.* from SYS_USER t inner join SYS_Office t1 on t.OfficeId=t1.Id",
(u,o) => u.UserCode.StartsWith("chen") && o.Name.Contains("办公室"));
var user2 = dao.Query<IDictionary,MyUser, MyOffice>("select t1.UserCode,t1.Name from SYS_USER t1 inner join SYS_Office t2 on t1.OfficeId=t2.Id",
(d,u, o) => u.UserCode.StartsWith("chen") && o.Name.Length>4);
3.UnitTest result
相关文章推荐
- Dappers : 基于Dapper.net 扩展的Dao
- Asp.net MVC 基于规则的权限设计(续)-- 扩展微软企业库安全模块
- 基于ASP.NET 3.5 Web Service 的JSON扩展应用
- Asp.net MVC 基于规则的权限设计(续)-- 扩展微软企业库安全模块
- dapper-dot-net用法及其扩展系列
- 基于ASP.NET 3.5 Web Service 的JSON扩展应用 推荐
- SharePoint And Ajax Technology(4):基于Microsoft ASP.NET AJAX 3.5的扩展
- Yale CAS + .net Client 实现 SSO(5)--扩展基于数据库的身份验证
- SharePoint And Ajax Technology(4):基于Microsoft ASP.NET AJAX 3.5的扩展
- .net下开源轻量级ORM框架Dapper扩展系列4(重构与优化)
- SharePoint And Ajax Technology(4):基于Microsoft ASP.NET AJAX 3.5的扩展2
- SharePoint And Ajax Technology(4):基于Microsoft ASP.NET AJAX 3.5的扩展
- Linux下基于net-snmp的Agent扩展开发
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 插件接口IModule扩展
- Asp.Net Ajax 学习笔记12 基于Microsoft AJAX Library扩展客户端组件
- .net core 基于 dapper 扩展的操作 mysql
- Dapper.net 在Parameterized时对于String的扩展(转)
- Dapper.net 在Parameterized时对于String的扩展
- 基于SuperMap iObjects.NET 7C 中扩展图层实现航线一键查询系统
- 更改ASP.NET网页扩展名