C#提高知识ADO.NET实体数据模型(3)-关于回滚-创新互联

原文

成都创新互联公司长期为近千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为港口企业提供专业的网站设计制作、网站设计港口网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制开发。

ADO.NET 实体数据模型,其实我是不太喜欢用这个,主要是遇到复杂查询时linq语句写起来比较多,当然也是可以直接执行sql语句的,但是执行复杂sql时还是执行不了,因为连接有问题。
但是ADO.NET实体有个优点就是,能实时更新数据库的变化,并且自动更新模型,基于这一点也是我在使用纯sql语句的时候,还是坚持使用了不少实体数据模型的。
这几天打算用实体模型写一个多表顺序修改的的数据库操作的功能,也就是上一个表或记录修改成功才能进行下一个表或记录的修改。这里就涉及到回滚的问题了。
我原本以为提供的有回滚的机制,不过没找到,不知道是不是我的资料不全。
我觉得可以用如下方法解决。
1、如果是同一个Entities下,最好将每个表的记录依次修改,然后最后只运行一个SaveChanges(),来达到同时提交的目的。
例,表名为虚构,

using (MyEntities aentity = new MyEntities())
{
    TAB_MEMBER tab1 = aentity.TAB_MEMBER.Where(o => o.ID == "123").FirstOrDefault();
    tab1.TBM_ID = "234";
    TAB_EMPLOYEE tab2 = aentity.TAB_EMPLOYEE.Where(o => o.ID == "id1").FirstOrDefault();
    tab2.TBA_ID = "id2";
    aentity.SaveChanges();
}

2、可以将旧的记录在一个新的实例中保存起来。但是不是引用赋值,而是将旧的记录的字段和属性,一次赋值给新的实例。然后保存修改,如果出错后,将新的实例的值再赋值给当前要修改的记录,再次保存。
也就是如下关系:
记录1副本=记录1;
bool r= 保存记录1;

if(r)
{
bool r2 = 保存记录2;
if(!r2)
{
将记录一的副本重新保存,覆盖掉记录1的修改。
}
}
目前来说,我会使用这两种方式解决回滚问题。欢迎大家交流。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

当前名称:C#提高知识ADO.NET实体数据模型(3)-关于回滚-创新互联
标题来源:https://www.cdcxhl.com/article20/ceojco.html

成都网站建设公司_创新互联,为您提供网站策划网站排名搜索引擎优化外贸网站建设响应式网站商城网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

商城网站建设