首先需要 添加 System.Transactions 程序集

数据表:

create table SalesOrder
(
ID int identity(1,1) primary key not null,
OrderNo nvarchar(50) not null,
OrderDate datetime not null,
UserName nvarchar(50) not null
) create table FlowNo
(
ID int identity(1,1) primary key not null,
OrderNo nvarchar(50) not null,
OrderType nvarchar(50) not null,
Remark nvarchar(50) not null
)
insert FlowNo values ('SM160309-00001','SM','销售订单')

控制台测试程序。

测试的时候 ,可以 输入 userName ,最大字符为50,可以测试 输入50个字符以上的用户名,会发现

  var tempModel = db.SalesOrder.FirstOrDefault();
if (tempModel != null)
tempModel.UserName = tempModel.UserName + orderNo.ToString().PadLeft(5, '0');
db.SaveChanges();
这段代码 没有 效果了。虽然是后面的代码报错,第一行的数据不会发生改变。
using System;
using System.Linq;
using System.Transactions; namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
try
{
using (var tran = new TransactionScope())
{
using (var db = new pengbgDBEntities())
{
var flowNo = db.FlowNo.FirstOrDefault(x => x.OrderType == "SM");
if (flowNo != null)
{
var orderNo = int.Parse(flowNo.OrderNo.Split('-')[]) + ;
string newOrderNo;
if (flowNo.OrderNo.Split('-')[] != "SM" + DateTime.Now.ToString("yyMMdd"))
{
newOrderNo = "SM" + DateTime.Now.ToString("yyMMdd-") + .ToString().PadLeft(, '');
}
else
{
newOrderNo = "SM" + DateTime.Now.ToString("yyMMdd-") +
orderNo.ToString().PadLeft(, '');
}
var userName = Console.ReadLine();
var tempModel = db.SalesOrder.FirstOrDefault();
if (tempModel != null)
tempModel.UserName = tempModel.UserName + orderNo.ToString().PadLeft(, '');
db.SaveChanges();
db.SalesOrder.Add(new SalesOrder
{
OrderDate = DateTime.Now,
OrderNo = newOrderNo,
UserName = userName
});
db.SaveChanges(); flowNo.OrderNo = newOrderNo;
db.SaveChanges();
}
}
tran.Complete();
Console.WriteLine("操作成功");
}
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
}
finally
{
Console.WriteLine("按任意键继续");
Console.ReadKey();
} }
}
}

.net EF 事物 订单流水号的生成 (一)的更多相关文章

  1. .net EF 事物 订单流水号的生成 (二):观察者模式、事物、EF

    针对.net EF 事物 订单流水号的生成 (一)  的封装. 数据依然不变. using System; using System.Linq; using System.Transactions; ...

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

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

  3. 使用 EF Power Tool Code Frist 生成 Mysql 实体

    原文:使用 EF Power Tool Code Frist 生成 Mysql 实体 1,在要生成的项目上右键   2,   3,   4,   5,  生成后的效果     已知问题: 1,在Mys ...

  4. php订单号的生成

    来自ECSHOP订单号生成函数:/includes/lib_order.php文件中的get_order_sn() /** * 得到新订单号 * @return string */ function ...

  5. 编写Java程序,模拟网上商城购物,当用户选好物品提交订单时,每笔订单会自动生成一个唯一的订单编号。

    查看本章节 查看作业目录 需求说明: 模拟网上商城购物,当用户选好物品提交订单时,每笔订单会自动生成一个唯一的订单编号.而部分电子商务网站在数据高峰期时,一毫秒可能需要处理近千笔的订单 现在简单模拟 ...

  6. C# 订单流水号生成

    例如流水号格式如下:XX201604120001,2位前缀加8位日期加4位流水号 首先各种搜索出现如下解决方案 public class SerialNoHelper { /// <summar ...

  7. EF Power Tools 数据库逆向生成时T4模板修改

    VS2013上使用EF Power Tools的Reverse Engineer Code First逆向生成. 发现数据库中的decimal(18, 4)字段在生成的mapping类中没有精度和小数 ...

  8. EF 事物

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  9. 简易发号SQL,可用于生成指定前缀自增序列,如订单号,生成优惠券码等

    需求1:订单号要求唯一.长度不太长.自增.但不能通过早上订单号和晚上订单号相减推算出平台大概一天的单量 需求2:要求生成10w张优惠券,要求券码唯一.不能太长,不能轻易猜测出其他券码 根据这些需求提供 ...

随机推荐

  1. Linux下一个Nginx安装步骤

    一个.下载pcre 官网下载:http://www.pcre.org/ # wget http://sourceforge.net/projects/pcre/files/pcre/8.35/pcre ...

  2. 接近带给你AngularJS - 经验说明示例

    接近带给你AngularJS列: 带你走近AngularJS - 基本功能介绍 带你走近AngularJS - 体验指令实例 带你走近AngularJS - 创建自己定义指令 ------------ ...

  3. Chapter 1 Securing Your Server and Network(7):禁用SQL Server Browse

    原文:Chapter 1 Securing Your Server and Network(7):禁用SQL Server Browse 原文出处:http://blog.csdn.net/dba_h ...

  4. 使用mysqlbinlog工具的基础上及时恢复数据的位置或点

    使用mysqlbinlog工具的基础上及时恢复的位置或点 MySQL备份一般采取完全备份的形式加日志备份.让我们运行一个完整备份,每天.每小时运行二进制日志备份. 这样在MySQL Server故障后 ...

  5. 嵌入在网页上Flash媒体播放器(1)

    做的项目,在不久的将来相关的Flash玩家使用,需要播放视频的网页上,不同的视频资源,需要不同的球员.基于使用稳定性.的嵌入式和嵌入式复杂性能的优点概括起来有两种方式(不同的玩家),视频资源也略有不同 ...

  6. JAVA: httpclient 详细说明——第四章;

    httpclient 具体解释--第一章. httpclient 具体解释--第二章: httpclient 具体解释--第三章: httpclient 具体解释--第四章: httpclient 具 ...

  7. OAuth打造webapi认证服务

    使用OAuth打造webapi认证服务供自己的客户端使用 一.什么是OAuth OAuth是一个关于授权(Authorization)的开放网络标准,目前的版本是2.0版.注意是Authorizati ...

  8. Android:抄QQ照片选择器(按相册类别显示,加入选择题)

    这个例子的目的是为了实现类似至QQ照片选择功能.选择照片后,,使用类似新浪微博 微博 页面上显示. 先上效果图:     本例中使用的主要技术: 1.使用ContentProvider读取SD卡全部图 ...

  9. ubuntu安装jdk eclipse mysql等

    linux ubuntu下安装java web开发环境,需要安装包: jdk7 eclipse(选择java EE developer) apche-tomcat mysql(workbench可视化 ...

  10. JSP简单的练习-使用JDOM阅读xml文件

    <%@ page contentType="text/html; charset=gb2312" language="java" %> <%@ ...