轮子?,我很任性,我要造不一样的轮子,同时支持关系型和非关系型的框架有没有

新版数据查询作了些调整,抽象了LabmdaQueryy和DBExtend,升级到版本4,非关系数据库MongoDB被支持了!

最近又好多人发各种框架,谁的好,用谁的?

个人意见,想标准和稳定,EF,NH就行了,要个性,选一款好用的轮子吧

个人开发的框架始终是高级玩具,学习的好东西,不要较真,欢迎下载此高级玩具,猛击底部GITHUB地址

历史版本3介绍 CRL快速开发框架开源完全转到Github

当前版本结构更改如下

一句话描述,非关系型数据库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函数

测试用例见开发文档 /page/MongoDB.aspx

void TestMongoDB()
{
//依赖官方驱动MongoDB.Driver
//MongoDBTest.Test();
//return;
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);
var query = instance.GetLambdaQuery();
query.Where(b => b.Status > 10);
var result3 = query.ToList();//返回List<MongoDBModel>
//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;
}
//标准查询
var query2 = instance.GetLambdaQuery();
query2.Select(b => new { aa = b.Id, bb = b.Status });
//query2.Where(b=>b.Status.In(1,2,3,4));
var result = query2.ToDictionary<Guid, int>();//返回字典
var result2 = query2.ToDynamic();//返回动态对象 //删除
instance.Delete(b => b.Status == 111);
//更新
var item2 = instance.QueryItem(b => b.Status > 0);
item2.Status = 123;
instance.Update(item2);
}

  

项目开源地址:https://github.com/hubro-xx/CRL3

非关系型数据库来了,CRL快速开发框架升级到版本4的更多相关文章

  1. CRL快速开发框架升级到4.52,谈谈开发过程中的优化

    CRL4.5版本已经稳定使用于目前的几个中型项目中,在实际使用中,也发现了不少问题,这些问题都在4.52中提交 CRL具体功能和使用请浏览 CRL快速开发框架系列教程 由于现在项目是一套业务系统,查询 ...

  2. CRL快速开发框架升级到3.1

    CRL是一款面向对象的轻量级ORM框架,本着快速开发,使用简便的原则,设计为 无需关心数据库结构,CRL自动维护创建,即写即用(CRL内部有表结构检查机制,保证表结构一致性) 无需第三方工具生成代理类 ...

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

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  4. CRL快速开发框架系列教程十一(大数据分库分表解决方案)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  5. CRL快速开发框架系列教程十(导出对象结构)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  6. CRL快速开发框架系列教程七(使用事务)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  7. CRL快速开发框架系列教程五(使用缓存)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  8. CRL快速开发框架系列教程一(Code First数据表不需再关心)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  9. CRL快速开发框架开源完全转到Github

    CRL简介 CRL是一款面向对象的轻量级ORM框架,本着快速开发,使用简便的原则,设计为 无需关心数据库结构,CRL自动维护创建,即写即用(CRL内部有表结构检查机制,保证表结构一致性) 无需第三方工 ...

随机推荐

  1. 多个Img标签之间的间隙处理方法

    1.多个标签写在一行 <img src="/i/eg_tulip.jpg" alt="郁金香" height="100px"/> ...

  2. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 3.安装Clus ...

  3. Android 工具-adb

    Android 工具-adb 版权声明:本文为博主原创文章,未经博主允许不得转载. Android 开发中, adb 是开发者经常使用的工具,是 Android 开发者必须掌握的. Android D ...

  4. Nexus(一)环境搭建

    昨天,成功搭建了自己的 Maven 环境(详见:Maven(一)环境搭建),今天就来研究和探讨下 Nexus 的搭建! 使用背景: 安装环境:Windows 10 -64位 JDK版本:1.7 Mav ...

  5. 【JQ基础】DOM操作

    内部插入:append() //向每个匹配的元素内部追加内容,可包含 HTML 标签 $(selector).append(function(index,html)) /*•index - 可选.接收 ...

  6. 茂名石化BPM应用实践 ——业务协同及服务共享平台建设和应用

    一.茂名石化简介 茂名石化隶属于中国石油化工集团公司,创建于1955年,是国家"一五"期间156项重点项目之一.经过50多年的发展,茂名石化已成为我国生产规模最大的炼油化工企业之一 ...

  7. jQuery标准的AJAX模板

    $('#saveInformationTemplate_button').on('click', function(){ if(isEmpty($("#name").val())) ...

  8. 关系型数据库与NoSQL数据库

    关系型数据库的优缺点 优点: 可以做事务处理,从而保证了数据的一致性: 可以进行JOIN等多表查询: 由于以SQL标准化为前提,数据更新的开销很小(相同的字段基本上都只有一处). 缺点: 大量数据的写 ...

  9. Mac OS X 上编写 ASP.NET vNext (二) IDE配置

    上一篇中介绍了如何在OS X上搭建.Net运行时.不过光有运行时还不够,还需要有一个好用的IDE,有了IDE的支持,OS X上的开发才称为可能. 和上篇类似,这里先列举出具体步骤,个人可以根据自己的情 ...

  10. Centos 6.6 下搭建php5.2.17+Zend Optimizer3.3.9+Jexus环境

    (为何安装php5.2.17这个版本 因为phpweb这个程序用到了Zend Optimizer3.3.9 这个东东已经停止更新了 最高支持5.2版本的php 所以就有了一晚上填坑的自己和总结了这篇文 ...