CRL快速开发框架系列教程十二(MongoDB支持)
2016-11-24 09:33
579 查看
本系列目录
CRL快速开发框架系列教程一(Code First数据表不需再关心)CRL快速开发框架系列教程二(基于Lambda表达式查询)
CRL快速开发框架系列教程三(更新数据)
CRL快速开发框架系列教程四(删除数据)
CRL快速开发框架系列教程五(使用缓存)
CRL快速开发框架系列教程六(分布式缓存解决方案)
CRL快速开发框架系列教程七(使用事务)
CRL快速开发框架系列教程八(使用CRL.Package)
CRL快速开发框架系列教程九(导入/导出数据)
CRL快速开发框架系列教程十(导出对象结构)
CRL快速开发框架系列教程十一(大数据分库分表解决方案)
CRL快速开发框架系列教程十二(MongoDB支持)
CRL快速开发框架系列教程十三(嵌套查询)
正文
因为MongoDB查询速度快,又有查询语法支持,做一些快速查询还是蛮方便的,但是调用它,又得重写查询实现
太麻烦,CRL来统一管理,和关系型数据库一样查询了
此功能依赖MongoDB官方驱动MongoDB.Driver
简单示例
对象定义MongoDBModel.cs
public class MongoDBModel:CRL.IModel { public MongoDBModel() { //保持唯一 Id = new Guid(); } public Guid Id { get; set; } public string OrderId { get; set; } public int Status { get; set; } }
管理类实现MongoDBTestManage
public class MongoDBTestManage : CRL.BaseProvider<MongoDBModel> { public static MongoDBTestManage Instance { get { return new MongoDBTestManage(); } } }
数据连接创建
CRL.SettingConfig.GetDbAccess = (dbLocation) => { //可按type区分数据库 var type2 = dbLocation.ManageType; if (type2 == typeof(Code.MongoDBTestManage)) { //实现MongoDB连接 return new CoreHelper.MongoDBHelper("mongodb://localhost:27017", "test2"); } return WebTest.Code.LocalSqlHelper.TestConnection; };
创建访问对象
var instance = Code.MongoDBTestManage.Instance;
插入数据
instance.Add(new Code.MongoDBModel() { OrderId = "1212", Status = DateTime.Now.Second });
函数Count统计
int count = instance.Count(b => b.Status >= 0);
Group
var query = instance.GetLambdaQuery(); //group query.GroupBy(b => b.OrderId).Select(b => new { count = b.Status.SUM(), count2 = b.Status.COUNT() }); var list = query.ToDynamic(); foreach (var item in list) { var a = item.count; var key = item.OrderId; }
标准查询
除了代表SQL特性的语法和函数不支持,其它都支持
var query2 = instance.GetLambdaQuery(); query2.Select(b => new { aa = b.Id, bb = b.Status }); query2.Where(b=>b.Status.In(1,2,3,4)&&b.OrderId.StartsWith("123"));//支持扩展方法 var result = query2.ToDictionary<Guid, int>();//返回字典 var result2 = query2.ToDynamic();//返回动态对象 var result3 = query2.ToList();//返回List<MongoDBModel>
更新删除和之前调用方式保持一致
由于MongoDB的特性,以下不能实现,调用可能会抛出异常
关联查询
关联删除
关联更新
SQL语句查询
事务
存储过程
自动编译
部份SQL函数
由于驱动的问题,匿名对象结果没法实现,4.2新增的功能不被支持
相关文章推荐
- CRL快速开发框架系列教程七(使用事务)
- CRL快速开发框架系列教程十一(大数据分库分表解决方案)
- CRL快速开发框架系列教程九(导入/导出数据)
- CRL快速开发框架系列教程二(基于Lambda表达式查询)
- CRL快速开发框架系列教程一(Code First数据表不需再关心)
- CRL快速开发框架系列教程五(使用缓存)
- CRL快速开发框架系列教程十三(嵌套查询)
- CRL快速开发框架系列教程十(导出对象结构)
- CRL快速开发框架系列教程六(分布式缓存解决方案)
- CRL快速开发框架系列教程三(更新数据)
- CRL快速开发框架系列教程四(删除数据)
- ASP.NET企业开发框架IsLine FrameWork系列之十二--使用Session、Cookie与安全支持
- ASP.NET企业开发框架IsLine FrameWork系列之十二--使用Session、Cookie与安全支持
- 使用VTEditor软件快速开发网站系列教程六 框架篇
- WEB开发框架系列教程 (一)快速创建解决方案
- CRL快速开发框架4.4版发布,支持主从读写分离
- UltimateAndroid快速开发框架简介与教程(也是一套Android快速开发的教程)
- RDIFramework.NET — 系列目录 — 基于.NET的快速信息化系统开发框架
- (pomelo系列入门教程)深入浅出node.js游戏服务器开发——Pomelo框架的设计动机与架构介绍
- 树莓派开发系列教程10——树莓派spi液晶屏支持(fbtft)