首先需要 添加 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. Web Deploy发布网站及常见问题解决方法(图文)

    Web Deploy发布网站及常见问题解决方法(图文) Windows2008R2+IIs7.5 +Web Deploy 3.5 Web Deploy 3.5下载安装 http://www.iis.n ...

  2. c# winform 引用sqlite.dll 运行报错解决方法

    错误信息 :  未能加载文件或程序集“System.Data.SQLite, Version=1.0.81.0, Culture=neutral, PublicKeyToken=db937bc2d44 ...

  3. Android开发技巧——PagerAdapter再简单的包

    再次内容View的ViewPager该适配器PagerAdapter简包,支持List数据与SparseArray数据.随着更新的浏览功能. 首先,首先贴上顶部抽象类代码: /* * Date: 14 ...

  4. overflow的几个坑

    在android 4.0的原生浏览器上注意: html元素上不要加overflow: auto;的样式,否则会造成有些元素无法点击 在absolute元素上 不要加 overflow: auto; 否 ...

  5. JavaScript变量作用域和内存问题(二)

    执行环境是js中特别重要的概念,是指变量或者函数可以访问其他数据,定义自己的行为.每个执行环境都有一个与之相对应的变量对象,执行环境中定义的所有变量和函数都保存在这个变量中,我们看不到这个变量,但是后 ...

  6. 本文摘录 - Infobright

    背景 论文 Brighthouse: AnAnalytic Data Warehouse for Ad-hoc Queries.VLDB 2008 brighthouse它是一个面向列的数据仓库.在数 ...

  7. mysql经常使用命令总结

    MySQL经常使用指令(备查) 最经常使用的显示命令: 1.显示数据库列表.  show databases;  2.显示库中的数据表:  use mysql; show tables;  3.显示数 ...

  8. Codeforces Round #256 (Div. 2) D. Multiplication Table

    主题链接:http://codeforces.com/contest/448/problem/D 思路:用二分法 code: #include<cstdio> #include<cm ...

  9. mapxtreme C# 完美车辆动态轨迹展示

    演示程序请在 http://pan.baidu.com/s/1jG9gKMM#dir/path=%2F%E4%BA%A7%E5%93%81%2FDemos 找 Trajectory.rar 轨迹回放功 ...

  10. 数据结构:循环队列(C语言实现)

    生活中有非常多队列的影子,比方打饭排队,买火车票排队问题等,能够说与时间相关的问题,一般都会涉及到队列问题:从生活中,能够抽象出队列的概念,队列就是一个能够实现"先进先出"的存储结 ...