Rafy 框架又添新成员:流水号插件。本文将解释 Rafy 框架中的流水插件的场景、使用方法。

场景


在开发各类数据库应用系统时,往往需要生成从一开始的流水号,有时还需要按月或者按日进行独立生成,如下面的格式:2016031800000001、2016031800000002……。

设计本插件用于生成上述相应格式的编号。

使用方法


添加插件

1.通过 Nuget Package Manager 搜索并安装 Rafy.SerialNumber 插件。

2.在 DomainApp 中添加该插件;同时,设置该插件所对应的数据库配置名:

class JXCApp : DomainApp
{
protected override void InitEnvironment()
{
//配置插件所对应的数据库配置名。
Rafy.SerialNumber.SerialNumberPlugin.DbSettingName = "TestDb"; //添加流水号插件到 Rafy 应用程序集中。
RafyEnvironment.DomainPlugins.Add(new Rafy.SerialNumber.SerialNumberPlugin()); base.InitEnvironment();
}
}
 
使用插件

1.生成数据库。

该插件中自带两个实体:SerialNumberInfo 、SerialNumberValue ,所以 Rafy 会为其在数据库中添加相应的两张表。

2.添加流水号生成规则。

SerialNumberInfo 表示定义的流水号生成规则信息。而 SerialNumberValue 则表示生成的流水号的具体值。所以要生成流水号,必须先为其定义生成规则。可以使用 SerialNumberController 进行简单的每日规则创建,示例如下:

var controller = DomainControllerFactory.Create<SerialNumberController>();
var sni = controller.CreateDailySerialNumberInfo("流水号规则-1");
 

CreateDailySerialNumberInfo 方法内部其实非常简单,开发者可以参考以下代码创建新的生成规则,如下:

/// <summary>
/// 创建一个以日期进行分组生成编号的规则,存储到仓库中,并返回。
/// 性能-仓库访问次数:1。
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public SerialNumberInfo CreateDailySerialNumberInfo(string name, string format = "yyyyMMdd********")
{
var sni = new SerialNumberInfo
{
Name = name,
TimeGroupFormat = "yyyyMMdd",
Format = format,
RollValueStart = 1,
RollValueStep = 1,
}; var infoRepo = RF.Concrete<SerialNumberInfoRepository>();
infoRepo.Save(sni); return sni;
});

3.生成流水号。

使用以下代码生成流水号即可:

var next = controller.GenerateNext("流水号规则-1");
Assert.AreEqual("2016031800000001", next);
next = controller.GenerateNext("流水号规则-1");
Assert.AreEqual("2016031800000002", next);
next = controller.GenerateNext(sni);
Assert.AreEqual("2016031800000002", next);

PS:该文已经纳入《 Rafy 用户手册》中。


Rafy 框架 - 流水号插件的更多相关文章

  1. Rafy 框架 - 幽灵插件(假删除)

      Rafy 框架又添新成员:幽灵插件.本文将解释该插件的场景.使用方法.原理.   场景 在开发各类数据库应用系统时,往往需要在删除数据时不是真正地删除数据,而只是把数据标识为'已删除'状态.这些数 ...

  2. Rafy 框架 - 时间戳插件

    本文将解释 Rafy 框架中的时间戳插件的场景.使用方法.原理. 场景 在开发各类数据库应用系统时,业务领域实体往往需要包含"创建时间"."最后更新时间".&q ...

  3. 使用 NuGet 下载最新的 Rafy 框架及文档

    为了让开发者更方便地使用 Rafy 领域实体框架,本月,我们已经把最新版本的 Rafy 框架程序集发布到了 nuget.org 上,同时,还把 RafySDK 的最新版本发布到了 VisualStud ...

  4. Rafy 框架 - 使用 SqlTree 查询

    本文介绍如何使用 Rafy 框架中的 Sql Tree 查询: 除了开发者常用的 Linq 查询,Rafy 框架还提供了 Sql 语法树的方式来进行查询. 这种查询方式下,开发者不需要直接编写真正的 ...

  5. Rafy框架

    l  什么是Rafy框架? -------- Rafy 是一个面向企业级开发的插件化快速开发框架. l  Rafy的优点是什么? ------快速开发.产品线工程.一套代码可同时生成并运行 C/S.单 ...

  6. Rafy 框架:领域控制器

    本文简要说明如何使用 Rafy 框架中的领域控制器. 简介 领域控制器是 Rafy 框架中用于封装领域逻辑的主要方式. 在控制器中,开发者可以封装大量的业务逻辑,并向外暴露业务接口.内部的逻辑在实现时 ...

  7. Rafy 框架 - 通用查询条件(CommonQueryCriteria)

    在应用开发过程中,有 80% 的场景下,开发者所需要的实体查询,查询条件中其实都是一些简单的属性匹配,又或是一些属性匹配的简单组合.Rafy 为这样的场景提供了更为方便使用的 API:CommonQu ...

  8. 一位同事对 Rafy 框架的一些建议及我的回复

    下面是一位同事对当前的产品开发框架提出的一些建议,以及我的回复.我觉得一些问题提得有一定的代表性,在征得本人同意后,将本邮件发布在博客中. 同时,也非常希望对框架.产品有好的建议的小伙伴,都可以给我发 ...

  9. 快速开发~Rafy框架的初步认识

    当我们开始使用EF的同时,是不是就会更好的认识了其他的ORM框架,最近接触了Rafy的使用,感觉还是蛮有兴趣去学习的,虽然最初的我到现在看的并不深入,但是我个人感觉还是可以简单地做一些总结的啦,或许语 ...

随机推荐

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(67)-MVC与ECharts

    系列目录 ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Fire ...

  2. .net 分布式架构之任务调度平台

    开源地址:http://git.oschina.net/chejiangyi/Dyd.BaseService.TaskManager .net 任务调度平台 用于.net dll,exe的任务的挂载, ...

  3. Android如何制作漂亮的自适布局的键盘

    最近做了个自定义键盘,但面对不同分辨率的机型其中数字键盘不能根据界面大小自已铺满,但又不能每种机型都做一套吧,所以要做成自适应,那这里主讲思路. 这里最上面的titlebar高度固定,下面输入的金额高 ...

  4. input type='file'上传控件假样式

    采用bootstrap框架样式 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> &l ...

  5. Maven 代理设置

    在maven的安装目录下 %MAVEN_HOME%/conf/setting.xml 中进行设置 <proxies>    <!-- proxy     | Specificatio ...

  6. Kotlin与Android SDK 集成(KAD 05)

    作者:Antonio Leiva 时间:Dec 19, 2016 原文链接:https://antonioleiva.com/kotlin-integrations-android-sdk/ 使用Ko ...

  7. 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'T_Shell' 中的标识列插入显式值。

    --允许将显示值插入表的标识列中-ON:允许 OFF:不允许set identity_insert T_shell ONset identity_insert T_Shell OFF

  8. JavaScript中的this

    本文尽量避免概念性的讲解,那样太抽象 所以下面以一些简单的例子,从易到难对this的用法总结 1.方法中的this会指向当前执行该方法的对象 如: var name = "window&qu ...

  9. [Top-Down Approach]Take Notes

    Computer Networking - A Top-Down Approach Six Edition Learn HTTP Using Browser and Proxy 2016-03-20 ...

  10. 让OMCS支持更多的视频采集设备

    有些OMCS用户在他的系统使用了特殊的视频采集卡作为视频源(如AV-878采集卡),虽然这些采集卡可以虚拟为一个摄像头,但有些视频采集卡需要依赖于自带了sdk才能正常地完成视频采集工作.在这种情况下, ...