您的位置:首页 > 数据库 > Mongodb

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新增的功能不被支持
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: