EF架构~关系表插入应该写在事务里,但不应该是分布式事务
这个标题很有意思,关系表插入,就是说主表和外表键在插入时,可能会有同步插的情况,如在建立主表时,扩展表需要同步完成数据的初始化工作,而对于多表插入时,我们为了保证数据的一致性会针它写在事务中,而对于.net中的事件,它在一些情况下,会不那么单纯,对于ef和linq to sql来说,你的事务如果出现多次提交动作(submitchange | savechanges),那么,.net这边会把它提升为分布式事务(MSDTC),即.net认为,对于一个数据表的操作,不会出现多个savechanges,OK,这个可以解释的通,一个数据库,一个提交,这是符合性能要求的,呵呵,但对于我们的架构来说,有时一疏忽,就违背了.net的这个原则,如,我们封装的Insert方法,可能是这样的
public virtual void Insert(TEntity item)
{
Db.Entry<TEntity>(item);
Db.Set<TEntity>().Add(item);
this.SaveChanges(); }
这个代码也没有问题,在一个插入动作完成后,系统由SaveChanges方法完成一次提交,正是由于这样的代码,所以我们的麻烦就来了,如果是对两个表的操作吗?
aRepository.Insert(a);
bRepository.Insert(b);
什么问题?数据一致性不能保证,因为没有事务块,呵呵,加上了再看看
using (TransactionScope trans = new TransactionScope())
{
aRepository.Insert(a);
bRepository.Insert(b);
trans.Commit();
}
OK,感觉是没有问题了,但细一想就会看出问题来了,因为我们封装的insert会有提交动作,所以,在这个事务块中,.net会被认识是一个MSDTC(分布式的事务),原因是提交了多次,而如果你没有打开msdtc服务的话,就会出现下面的黄屏了
aaarticlea/png;base64,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" alt="" />
注意:系统触发分布式事务的前提是你的WEB服务器与数据库服务器分别部署在两个服务器上,一台不会出现这个问题的。
OK,这个MSDTC是怎么一回事,不是今天要说的重要,如果想学习MSDTC,请看我的这些文章:
第二十六回 将不确定变为确定~transactionscope何时提升为分布式事务?
第二十七回 将不确定变为确定~transactionscope何时提升为分布式事务~续
今天我们要说的是在插入关系表时,怎样使它不被提升为分布式事务,事实上,怎么做我们已经知道了,就是方法中只出现一个savechages,呵呵,而对于主表与扩展表来说,对于自增主键的主表,做起来就有些麻烦了,呵呵,我们还需要借助SQL函数来实现主键的获取工作,当主键插入后,通过SQL函数得到新值,然后再为扩展表赋值,最后一些savechange()就可以了,具体我们看一下代码:
int maxID = Convert.ToInt32(new TsingDa_NewLearningBarEntities()//当前表最大ID
.Database.SqlQuery<decimal>("SELECT IDENT_CURRENT ('Classroom_Info')")
.First());
using (TransactionScope trans = new TransactionScope())
{
try
{
db.Entry<Classroom_Info>(entity);
db.Set<Classroom_Info>().Add(entity); //绑定学生
entity.User_Classroom_R.ToList().ForEach(i =>
{
i.ClassroomInfoID = maxID + ;
db.Entry<User_Classroom_R>(i);
db.Set<User_Classroom_R>().Add(i);
});
db.SaveChanges();//是否为msdtc就看它提交的次数
trans.Complete();
}
catch (Exception)
{
trans.Dispose();//出现异常,事务手动释放
throw;
}
}
而一次savechanges所产生的SQL也是我们可以接受的,与服务器连接池中开启一个新连接,然后把语句一条一条的发过去,虽然不是一次性发送,但结果我们也是可以接受的,呵呵。
aaarticlea/png;base64,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" alt="" />
补充回复:
看了xiashengwang的 回复,我自己去试了一下,果然savechange将当前上下文中所有要提交的东西包在了一个事务块里,出现异常后,自动完成callback,所以,对 于一个数据库来说TransactionScope可以省去,而对于多个数据库的操作,才需要使用TransactionScope,而对于何时将 TransactionScope提升为MSDTC的级别,到目前为止,我只能说,一个上下文的savechanges不会提升,多个 savechanges就会提升到msdtc,而矛盾是,一个savechanges的话,确实不需要外加TransactionScope块了,呵呵, 这部分文章估计我还要继续写了,看看有没有办法在同一上下文多个savechanges操作时,不让系统提升到MSTDC的级别,呵呵。
EF架构~关系表插入应该写在事务里,但不应该是分布式事务的更多相关文章
- EF架构~通过EF6的DbCommand拦截器来实现数据库读写分离~续~添加事务机制
回到目录 上一讲中简单介绍了一个EF环境下通过DbCommand拦截器来实现SQLSERVER的读写分离,只是一个最简单的实现,而如果出现事务情况,还是会有一些问题的,因为在拦截器中我们手动开启了Co ...
- 第三代微服务架构:基于 Go 的博客微服务实战案例,支持分布式事务
这是一个可一键部署在 Kubernetes-Istio 集群中的,基于 Golang 的博客微服务 Demo,支持分布式事务. 项目地址:https://github.com/jxlwqq/blog- ...
- 工资表的生成、显示、修改工资,应用transactionscope 分布式事务
一: 二:SalarySheetDAL.cs using System; using System.Collections.Generic; using System.Linq; using Syst ...
- EF架构~通过EF6的DbCommand拦截器来实现数据库读写分离~终结~配置的优化和事务里读写的统一
回到目录 本讲是通过DbCommand拦截器来实现读写分离的最后一讲,对之前几篇文章做了一个优化,无论是程序可读性还是实用性上都有一个提升,在配置信息这块,去除了字符串方式的拼接,取而代之的是sect ...
- Spring Cloud实战 | 第十篇 :Spring Cloud + Seata 1.4.1 + Nacos1.4.0 整合实现微服务架构中逃不掉的话题分布式事务
Seata分布式事务在线体验地址:https://www.youlai.store 本篇完整源码地址:https://github.com/hxrui/youlai-mall 有想加入开源项目开发的童 ...
- 微服务架构下分布式事务解决方案——阿里GTS
1 微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单.松耦合的服务,这样可以降低开发难度.增强扩展性.便于敏捷开发.当前被越来越多的开发者推崇,很多互联网行业巨头.开源社区等都开始了微服务 ...
- 微服务架构下分布式事务解决方案——阿里云GTS
https://blog.csdn.net/jiangyu_gts/article/details/79470240 1 微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单.松耦合的服务,这 ...
- TCC分布式事务的实现原理(转载 石杉的架构笔记)
拜托,面试请不要再问我TCC分布式事务的实现原理![石杉的架构笔记] 原创: 中华石杉 目录 一.写在前面 二.业务场景介绍 三.进一步思考 四.落地实现TCC分布式事务 (1)TCC实现阶段一:Tr ...
- EF架构~关于多对多关系表无法更新与插入的问题
回到目录 在EF里,我们设计模型时,会设计到多对多关系,在EF里会把这种关系会转成两个一对多的关系表,这是比较友好的,因为多对多来说,对于业务本身没什么意思,所以隐藏了,没什么坏处,但对于这个隐藏来说 ...
随机推荐
- ORA-12543: TNS:destination host unreachable
在连接Oracle数据库时,如果使用Tnsnames.ora中配置的数据源名称有时会报 ORA-12543: TNS:destination host unreachable 异常,比如:在Tnsna ...
- Pure.css网格系统学习心得——图片的响应式以及应用填充和边框网格单位的学习
今天学习了pure.css可定制的网格系统,pure默认的网格系统是移动先行,如果我们想在小屏幕上有网格只要用pure-u-*就可以了,下面来说一下它的主要用法! <div class=&quo ...
- 电子数字 网易游戏在线笔试 第一题 hihocoder
题目链接 http://hihocoder.com/contest/ntest2016spring1/problem/1 这个题目有几个算法考点: (1)对于一个LED数码管(由7个发光二极管封装在一 ...
- 使用joi来验证数据模型
我们用nodejs实现一些功能时,往往需要对用户输入的数据进行验证.然而,验证是一件麻烦的事情,很有可能你需要验证数据类型,长度,特定规则等等,在前端做表单验证时,我们常用的做法是使用正则,正则表达式 ...
- :尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。 ---> System.BadImageFormatException: 试图加载格式不正确的程序。
iis有程序池有一个属性 是否启用32位应用程序默认是true的特别注意windows2008 服务器系统iis默认的是true 这样发布一下也是必须要做的
- Hyper-V初涉_共享式网络链接
任何一台计算机,如果不能与网络连通,可以说已经失去了大部分的功能,Windows 8尤是如此,虚拟机亦是如此. Hyper-V并不能对物理机的网卡进行识别,所以需要借助虚拟网卡通过物理机的网络共享实现 ...
- php 正则
1.中括号 [0-9]匹配0-9 [a-z]匹配a-z小写字母 [A-Z]匹配A-Z大写字母 [a-zA-Z]匹配所有大小写字母 可以使用ascii来制定更多 2.量词 p+匹配至少一个含p的字符串 ...
- 【随记】Hello World小记
今天装Python,如下: 突然想到,到现在,我已经数不清写过多少遍Hello World了. 最早是初一学VB的时候,用Label1在Form1上画一个,然后修改Caption属性为“Hello W ...
- Python成长笔记 - 基础篇 (十二)
本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 主题:学员管理系统 需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的 ...
- js 将long型字符串转换成日期格式
工作中难免会碰到日期的转换,往往为了方便,后台都是把时间以long型(形如1343818800000)返回给web前端.再有前端自己根据页面需求转换成相应的日期格式.这里将我常用的一个转换时间的函数贴 ...