CRL快速开发框架系列教程十二(MongoDB支持)

本系列目录

  1. CRL快速开发框架系列教程一(Code First数据表不需再关心)
  2. CRL快速开发框架系列教程二(基于Lambda表达式查询)
  3. CRL快速开发框架系列教程三(更新数据)
  4. CRL快速开发框架系列教程四(删除数据)
  5. CRL快速开发框架系列教程五(使用缓存)
  6. CRL快速开发框架系列教程六(分布式缓存解决方案)
  7. CRL快速开发框架系列教程七(使用事务)
  8. CRL快速开发框架系列教程八(使用CRL.Package)
  9. CRL快速开发框架系列教程九(导入/导出数据)
  10. CRL快速开发框架系列教程十(导出对象结构)
  11. CRL快速开发框架系列教程十一(大数据分库分表解决方案)
  12. CRL快速开发框架系列教程十二(MongoDB支持)
  13. CRL快速开发框架系列教程十三(嵌套查询)

 正文html

由于MongoDB查询速度快,又有查询语法支持,作一些快速查询仍是蛮方便的,可是调用它,又得重写查询实现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;
        }
    }

管理类实现MongoDBTestManageide

    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; };

建立访问对象post

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新增的功能不被支持

相关文章
相关标签/搜索