针对.net EF 事物 订单流水号的生成 (一)  的封装。

  数据依然不变。

using System;
using System.Linq;
using System.Transactions; namespace ConsoleApplication1
{
class Program
{
static pengbgDBEntities db = new pengbgDBEntities();
static void Main(string[] args)
{
try
{
DAL dal = new DAL();
dal.AddOrder += dal_AddOrder;
var newOrderNo = dal.Tran(DAL.EnumOrderType.SM);
Console.WriteLine("添加成功:" + newOrderNo);
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
}
finally
{
Console.WriteLine("按任意键继续");
Console.ReadKey();
}
} static int dal_AddOrder(string orderNo)
{
db.SalesOrder.Add(new SalesOrder() { UserName = Console.ReadLine(), OrderNo = orderNo, OrderDate = DateTime.Now });
return db.SaveChanges();
}
} public class DAL
{
public delegate int DelTranOrder(string orderNo);
public event DelTranOrder AddOrder;
public pengbgDBEntities db = new pengbgDBEntities(); public int Add(string orderNo)
{
return AddOrder(orderNo);
} public string BulidOrderNo(EnumOrderType enunType)
{
var orderType = enunType.ToString();
var flowNo = db.FlowNo.FirstOrDefault(x => x.OrderType == orderType);
var flowNoStart = DateTime.Now.ToString("yyMMdd-");
var flowNoEnd = "";
if (flowNo != null)
{
if (flowNo.OrderNo.Split('-')[] != orderType + flowNoStart)
{
flowNoEnd = (int.Parse(flowNo.OrderNo.Split('-')[]) + ).ToString();
}
}
else
{
db.FlowNo.Add(new FlowNo { OrderNo = flowNoStart + flowNoEnd.PadLeft(, ''), OrderType = orderType, Remark = "New" });
}
return orderType + flowNoStart + flowNoEnd.PadLeft(, '');
} public string Tran(EnumOrderType orderType)
{
var newOrderType = BulidOrderNo(orderType);
using (var scope = new TransactionScope())
{
AddOrder(newOrderType);
var flowNo = db.FlowNo.FirstOrDefault(x => x.OrderType == orderType.ToString());
if (flowNo != null)
flowNo.OrderNo = newOrderType;
db.SaveChanges();
scope.Complete();
}
return newOrderType;
} public enum EnumOrderType
{
SM,//销售订单
PM // 外发订单
//......其他
}
}
}

.net EF 事物 订单流水号的生成 (二):观察者模式、事物、EF的更多相关文章

  1. .net EF 事物 订单流水号的生成 (一)

    首先需要 添加 System.Transactions 程序集 数据表: create table SalesOrder ( ID ,) primary key not null, OrderNo ) ...

  2. 通过序列号Sequence零代码实现订单流水号

    序列号管理 本文通过产品编码和订单流水号介绍一下序列号(Sequence)在crudapi中的应用. 概要 序列号 MySQL数据库没有单独的Sequence,只支持自增长(increment)主键, ...

  3. C#大型电商项目优化(二)——嫌弃EF与抛弃EF

    上一篇博文中讲述了使用EF开发电商项目的代码基础篇,提到EF后,一语激起千层浪.不少园友纷纷表示:EF不适合增长速度飞快的互联网项目,EF只适合企业级应用等等. 也有部分高手提到了分布式,确实,性能优 ...

  4. 在EF中使用Expression自动生成p=>new Entity(){X="",Y="",..}格式的Lambda表达式灵活实现按需更新

    一.基本介绍      回忆:最早接触Expression是在学校接触到EF的时候,发现where方法里的参数是Expression<Func<T,bool>>这么一个类型,当 ...

  5. Javascript生成二维码(QR)

    网络上已经有非常多的二维码编码和解码工具和代码,很多都是服务器端的,也就是说需要一台服务器才能提供二维码的生成.本着对服务器性能的考虑,这种小事情都让服务器去做,感觉对不住服务器,尤其是对于大流量的网 ...

  6. 使用jquery.qrcode生成二维码(转)

    jQuery 的 qrcode 插件就可以在浏览器端生成二维码图片. 这个插件的使用非常简单: 1.首先在页面中加入jquery库文件和qrcode插件. <script type=" ...

  7. iOS 生成二维码

    首先先下载生成二维码的支持文件 libqrencode 添加依赖库 CoreGraphics.framework. QuartzCore.framework.AVFoundation.framewor ...

  8. QR code 扩展生成二维码

    include './phpqrcode/phpqrcode.php';  //引入QR库 QRcode::png("leo", 'qrcode.png', 'L', 10);  ...

  9. 使用zxing生成二维码

    public static Bitmap Create2DCode(String str) throws WriterException {                 // 生成二维矩阵,编码时 ...

随机推荐

  1. 【Android基础】listview控件的使用(1)------最简单的listview的使用

    listview控件是项目开发中最常用的空间之一,我将慢慢推出关于listview的一系列的文章,先从最简单的,系统自带的listview开始吧! 先上效果图: activity_one.xml &l ...

  2. 条形码/二维码之开源利器ZXing图文介绍(转)

    继前面介绍的一个日本开源软件(该软件只能实现QRCode)原文: Java实现二维码QRCode的编码和解码(http://sjsky.iteye.com/blog/1136934 ),今发现又一优秀 ...

  3. Team Foundation Server 2013 Update 3 下载激活

    http://www.microsoft.com/zh-cn/download/details.aspx?id=43728 支持的操作系统 Windows 7 Service Pack 1, Wind ...

  4. 如何ios中间Safari在开发了类似的native app像全屏webapp

    本文交换了我www.gbtags.com文章. <meta name="format-detection" content="telephone=no email= ...

  5. Eclipse+超快速的模拟器Genymotion开展Android申请书(第一步:安装和配置Genymotion)

    一.安装和配置Genymotion (1)因为Eclipse自带SDK模拟器,慢启动,别说 今天给大家介绍一个更快速的模拟器Genymotion (2)第一次去Genymotion在官方网站上注册一个 ...

  6. hdoj1010Starship Troopers (树dp,依赖背包)

    称号:hdoj1010Starship Troopers 题意:有一个军队n个人要占据m个城市,每一个城市有cap的驻扎兵力和val的珠宝,并且这m个城市的占率先后具有依赖关系,军队的每一个人能够打败 ...

  7. HDOJ 4974 A simple water problem

    A simple water problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/O ...

  8. Struts2 + uploadify 多文件上传完整的例子!

    首先,我这里使用的是  Jquery  Uploadify3.2版本号  导入相关的CSS  JS    <link rel="stylesheet" type=" ...

  9. ext3文件系统反删除利器ext3grep应用实战

    推荐:10年技术力作:<高性能Linuxserver构建实战Ⅱ>全网发行,附试读章节和全书实例源代码下载! 一."rm –rf"带来的困惑 国外一份非常著名的Linux ...

  10. 第22题 Rotate List

    Given a list, rotate the list to the right by k places, where k is non-negative. For example: Given  ...