工作了一段时间,自己手头上累积了一些常用的代码。在项目中不断地被使用。帮整理出来,开成一个类库,QQZI是本人现公司(福建圈子互联网金融服务有限公司)的简写。公司主要从事互联网金融平台,在各大平台发布了基于H5开发的app,“圈子金融”,个人觉得是一个很有意义的App,宏扬民间传统,促进民间金融健康发展。
QQZiFramework最核心的是数据访问, 属于ORMapping,但又有别,比如像hibernate和linq之类,很强大,但有点庞大,其实我们需要的东西并不多,没必要为了打只蚊子而请大炮出来。另外这些框架用多了,sql反而写不好了。
QQZiFramework还包括了用户登录认证、参数配置、异常处理、加解密、常用工具类,web表格或者列表加载数据。目前主要应用在mvc的项目中,其它项目没做支持,不过还是容易扩展的
一般我们会对项目分层,经典的分层是UI ->业务层->数据层。但有时候会碰到,我们处理一个逻辑的时候,可能不局限于访问一个业务层的类方法,但我们一般在每个业务层单独调数据访问,开启和关闭连接,事务也是一样。所以为时候一个全局的数据访问控制就很有必要。
erp.public.js | 前端 |
DBContext | 控制器 |
业务层 |
erp.public.js是表格类,在移动端会自动显示为列表,带分页,支持增删改查。单表维护的话,只需要简单的调用。后面会讲解
DBContext惯穿整个后端,在控制层使用
[HttpPost]
public JsonResult Schedule_post()
{
JsonMessage jm = new JsonMessage();
string times = GetParamValue("time", 0, true).ToString();
int id = GetParamValue<int>("id", true);
string[] array = times.Split(new char[1] { '|' });
using (DBContext context = new DBContext(true))
{
context.GetBusiness<RMBDrivers>().SaveSchedule(id, array);
context.Commit();
}
jm.Result = id;
return Json(jm, JsonRequestBehavior.AllowGet);
}
GetParamValue是获取客户端提交的参数,也就是Request里面的值,这里主要是做过滤非法输入
目光保持在Using这一段,这才是重点,这一个过程是代理有数据访问的,New DBContext(true),true代理整个过程共享一个事件,如果不传则为共享一个连接
GetBusiness是创建业务访问类,通过这种方式来保证在一个连接或者事件中,比如SaveSchedule方法中可以用Context这个属性来操作数据库,具体使用方式后面会讲到
整个过程可以有多个GetBusiness,同一类型的Business只会创建一个实例
最后如果有事务的一定要comit,否则就会rollback掉,没有事务的可以不管,跳出using后会自动释放连接
感觉csdn的编辑器用起来不爽,写的比较累,开头篇先到这