.net EF 事物 订单流水号的生成 (一)
首先需要 添加 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 事物 订单流水号的生成 (一)的更多相关文章
- .net EF 事物 订单流水号的生成 (二):观察者模式、事物、EF
针对.net EF 事物 订单流水号的生成 (一) 的封装. 数据依然不变. using System; using System.Linq; using System.Transactions; ...
- 通过序列号Sequence零代码实现订单流水号
序列号管理 本文通过产品编码和订单流水号介绍一下序列号(Sequence)在crudapi中的应用. 概要 序列号 MySQL数据库没有单独的Sequence,只支持自增长(increment)主键, ...
- 使用 EF Power Tool Code Frist 生成 Mysql 实体
原文:使用 EF Power Tool Code Frist 生成 Mysql 实体 1,在要生成的项目上右键 2, 3, 4, 5, 生成后的效果 已知问题: 1,在Mys ...
- php订单号的生成
来自ECSHOP订单号生成函数:/includes/lib_order.php文件中的get_order_sn() /** * 得到新订单号 * @return string */ function ...
- 编写Java程序,模拟网上商城购物,当用户选好物品提交订单时,每笔订单会自动生成一个唯一的订单编号。
查看本章节 查看作业目录 需求说明: 模拟网上商城购物,当用户选好物品提交订单时,每笔订单会自动生成一个唯一的订单编号.而部分电子商务网站在数据高峰期时,一毫秒可能需要处理近千笔的订单 现在简单模拟 ...
- C# 订单流水号生成
例如流水号格式如下:XX201604120001,2位前缀加8位日期加4位流水号 首先各种搜索出现如下解决方案 public class SerialNoHelper { /// <summar ...
- EF Power Tools 数据库逆向生成时T4模板修改
VS2013上使用EF Power Tools的Reverse Engineer Code First逆向生成. 发现数据库中的decimal(18, 4)字段在生成的mapping类中没有精度和小数 ...
- EF 事物
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- 简易发号SQL,可用于生成指定前缀自增序列,如订单号,生成优惠券码等
需求1:订单号要求唯一.长度不太长.自增.但不能通过早上订单号和晚上订单号相减推算出平台大概一天的单量 需求2:要求生成10w张优惠券,要求券码唯一.不能太长,不能轻易猜测出其他券码 根据这些需求提供 ...
随机推荐
- asp.net模板控件示例
原文:asp.net模板控件示例 模板控件允许将控件数据与其表示形式相分离,模板化控件不提供用户界面. 编写它则是为了实现一个命名容器以及包含属性和方法可由宿主页访问的类,MSDN是这样解释的. 下面 ...
- 成不了天才,但为何也没成"人材"?(转)
长期以来,"软件业"一直被视为"智力密集"型的"朝阳"产业,大多数从业者都受过高等教育,其平均素质居于社会各行业的前列,这个产业的顶尖人物被 ...
- 参加persist.sys物业写权限的方法
1.于AndroidManifest.xml manifest添加属性android:sharedUserId="android.uid.system" 2.假设AndroidMa ...
- PowerShell 批量导入/导出Active Directory
PowerShell 批量导入/导出Active Directory 近期由于公司要求,须要导入20个供应商.20个客户到AD域中,刚開始手动添�了2个供应商,2个客户.可是感觉费时费 ...
- Android剪裁图片简单的方法
/** * 按正方形裁切图片 */ public static Bitmap ImageCrop(Bitmap bitmap) { int w = bitmap.getWidth(); // 得到图片 ...
- AndroidSlidingUpPanel
使用控制和简单的分析方法
滑 - 向上的时间可以飞起来控件的显示区域.分类似至play music有效. 该控件在主界面中有一个例如以下图红色箭头所指的底部触发区域: 该区域点击的时候被隐藏在下方的内容将网上漂移到顶部,直到被 ...
- ext3文件系统反删除利器ext3grep应用实战
推荐:10年技术力作:<高性能Linuxserver构建实战Ⅱ>全网发行,附试读章节和全书实例源代码下载! 一."rm –rf"带来的困惑 国外一份非常著名的Linux ...
- sun.misc.BASE64Encoder我找不到jar一揽子解决方案
1.合适的项目 --> 属性(Properties) --> java bulid path --> Libraries -> jre System Library(点加号在前 ...
- Linux Kernel系列 - 黄牛X内核代码凝视
Hanks.Wang - 专注于操作系统与移动安全研究.Linux-Kernel/SELinux/SEAndroid/TrustZone/Encription/MDM Mail - byhank ...
- 推荐系统相关算法:SVD
假如要预测Zero君对一部电影M的评分,而手上只有Zero君对若干部电影的评分和风炎君对若干部电影的评分(包含M的评分).那么能预测出Zero君对M的评分吗?答案显然是能.最简单的方法就是直接将预测分 ...